forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты C++ (http://forum.boolean.name/forumdisplay.php?f=56)
-   -   Sigel (http://forum.boolean.name/showthread.php?t=4960)

HolyDel 07.11.2007 01:44

Sigel
 
Вложений: 2
Всем привет.
Просьба протестить то, что в архиве (ето пример маво движка).
и вот етот код: (его надо засунуть в туже папку и отключить Debugger, чтобы было по чесному)
Код:

Graphics3D 1024,768,32,1

cam=CreateCamera()
TurnEntity cam,0,180,0
cnt=10000

cube=CreateCube()
tex=LoadTexture("texture.bmp")

EntityTexture cube,tex

last_tick=MilliSecs()

Type cub
        Field dx#,dy#,dz#,x#,y#,z#,ax#,ay#,az#,r#
        Field ent
End Type

For i=1 To cnt
        c.cub=New cub
        c\ax=Rnd(-2,2)
        c\ay=Rnd(-2,2)
        c\az=Rnd(-2,2)
        c\dx=Rnd(-0.005,0.005)*57
        c\dy=Rnd(-0.005,0.005)*57
        c\dz=Rnd(-0.005,0.005)*57
        c\r=Rnd(20,50)
        c\x=Rnd(-1.57,1.57)*57
        c\y=Rnd(-1.57,1.57)*57
        c\z=Rnd(-1.57,1.57)*57
        c\ent=CopyEntity(cube)       
Next
x#=0
y#=0
z#=0
While Not KeyDown(1)

For c.cub=Each cub
        x=Sin(c\x)*c\r
        y=Cos(c\y)*c\r
        z=-50+Sin(c\z)*c\r
        c\x=c\x+c\dx
        c\y=c\y+c\dy
        c\z=c\z+c\dz
        PositionEntity(c\ent,x,y,z)
        TurnEntity(c\ent,c\ax,c\ay,c\az)       
Next

        frames=frames+1
        If(last_tick<MilliSecs()-1000)
                last_tick=MilliSecs()
                fps=frames
                frames=0
        EndIf
       
        RenderWorld
        Text 10,10,fps
        Flip
Wend

пожалуйста, заметьте фпс и напишите его в етот тред (для обоих случаев)


кстати, вот код из примера
Код:

#include "stdafx.h"

#include "..\..\sigel\sigel.cpp" //подрубаем двиг

class Cubes
{
public:
        float dx,dy,dz,x,y,z,ax,ay,az,r;
        Entity* ent;
};

typedef std::list<Cubes*> culist;
culist cl;

int APIENTRY WinMain(HINSTANCE hInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR    lpCmdLine,
                    int      nCmdShow)
{
        // TODO: Place code here.
        AppTitle("Sigle. Texturing"); //нахвание приложения
        Init(1024,768,32,1); //инит графического режима

        Surface SurfCube; //создание "меша"
        SurfCube.MakeCube(1); //что именно создаем (половина размера куба)

        Texture CubeTex("texture.bmp");//грузим тексу

        const cnt=10000;

        for(int i=0;i<cnt;i++)
        {
        Cubes* cub=new Cubes;

        cub->ax=rnd(-2,2);
        cub->ay=rnd(-2,2);
        cub->az=rnd(-2,2);
        cub->dx=rnd(-0.005,0.005);
        cub->dy=rnd(-0.005,0.005);
        cub->dz=rnd(-0.005,0.005);
        cub->r=rnd(20,50);
        cub->x=rnd(-1.57,1.57);
        cub->y=rnd(-1.57,1.57);
        cub->z=rnd(-1.57,1.57);
        cub->ent=new Entity(&SurfCube);
        cub->ent->BindTex(&CubeTex);
//        cub->ent->Hide();

        cl.push_back(cub);
        }

        Font fnt;
        fnt.Bind;

        float dx=0,dy=0;
        char* a=new char[100];
        long last_tick=GetTickCount(),fps=0,frames=0;
        while(!KeyDown(VK_ESCAPE))//пока не нажали на еск
        {
                for(culist::const_iterator ci=cl.begin();ci!=cl.end();ci++)
                {
                        float x,y,z;
                        x=sin((*ci)->x)*(*ci)->r;
                        y=cos((*ci)->y)*(*ci)->r;
                        z=-50+sin((*ci)->z)*(*ci)->r;
                        (*ci)->x+=(*ci)->dx;
                        (*ci)->y+=(*ci)->dy;
                        (*ci)->z+=(*ci)->dz;
                        (*ci)->ent->Position(x,y,z);
                        (*ci)->ent->Turn((*ci)->ax,(*ci)->ay,(*ci)->az);                       
                }
                Render();//рендерим
                frames++;
                if(last_tick<GetTickCount()-1000)
                {
                        fps=frames;
                        frames=0;
                        last_tick=GetTickCount();
                }
                itoa(fps,a,10);
                fnt.DrawText(a,-0.5,0.3);

                itoa(Entts::GetInsCount(),a,10);
                fnt.DrawText(a,-0.5,0.25);

                itoa(Entts::GetOutCount(),a,10);
                fnt.DrawText(a,-0.5,0.2);

                Flip();//отображаем
        }

        DeInit();//деинициализация, освобождаем память
        return 0;
}

можете заметить, что блицевский синтаксис я не копирую. и не собираюсь.

сам двиг пока ничего не умеет, кроме как выводить объект и текстурить его (ну еще выводить текст). Вывод сделан крайне неоптимально (уже второй день бьюсь над VBO, но пока никак не "побежу", да и от glRotate glTranslate тоже надо избавляться. Однако даже на крайне неоптимальном выводе, мой двиг выводит затекстуренные кубы быстрее чем старичок блиц3д.
сама демка рисует 10000 кубов (и в том и в том случае), затекстуренных тексой 512 на 512.
на моем компе:
sigel - 23-30 фпс
blitz3d - 12-19фпс

к сожалению создать полностью идентичную демку мне не удалось, так что о разумности сравнения не особо заикаюсь, но то, что вывод по крайней мере "не медленнее" - ето имхо факт

Atomikc 07.11.2007 03:08

Re: Sigel
 
Запустил экзешник и... кароче 1 фпс.. правелнее 0.1.. так как картинка раз в 20 секунд меняется тока.... ненаю почему, вроде ПК не слабый.. и поликов всего в кадре 120000... (по 12 на кубик)

XenuS 07.11.2007 13:57

Re: Sigel
 
у мня было 5 фпс.
intel 2800Mhz
ОЗУ 1 Гб
Видео: Ati radeon 9600 256 Mb

kilan 07.11.2007 14:35

Re: Sigel
 
FPS=9 CPU=ADM Atlon 2000+ (1.86GHz) RAM=386MB GPU=GForce4 MX440 64 MB RAM

Данил 07.11.2007 14:40

Re: Sigel
 
Было ~22 фпс.
AMD 3000+
ОЗУ 1 гб
6600 GeForce 128 мб

dimanche13 07.11.2007 14:45

Re: Sigel
 
погоди ты ж через ГЛ выводишь, а Б3Д через Директ. 1 фпс вюдха встроенная, пень 3-800 128 рам

IGR 07.11.2007 14:57

Re: Sigel
 
я еще не затестил , но попробую обезательно !!

как не странно но люди пишут ФПС только в одном случее !!
интересно было бы сравнить оба !!

Данил 07.11.2007 15:06

Re: Sigel
 
Я бы написла ,но у меня б3д нету. =(

johnk 07.11.2007 15:44

Re: Sigel
 
23-26
P4 - 3.0 GHz, 2048mb DDRII, 128mb GeForce 6600GT.

Horror 07.11.2007 15:50

Re: Sigel
 
блитц3д- 10 фпс
твой ехе - 17-18 фпс
Атлон 3200, 128 видео , 512 озу
работает побыстрей)
че вы все двиги пишите((
я тоже хочу, научите меня...

ABTOMAT 07.11.2007 16:28

Re: Sigel
 
таой ехе - 22 ФПС
Блитз - 9 ФПС

ЖыФорс 6600 128 Мб ЦП Пеньтиум 4 2800 МГц ОЗУ 1024 Мб

Ых, знал бы я сяху...

jimon 07.11.2007 18:42

Re: Sigel
 
не тестил .. просто просмотрел код ..

Код:

#include "..\..\sigel\sigel.cpp" //подрубаем двиг
дурное начало имхо .. совершенно не грамотно :)

HolyDel 07.11.2007 23:06

Re: Sigel
 
Atomicк, какая видюха? И неужели на самом деле там редко обновляются кадры?
Jimon, а какой способ подключения грамотнее?

ЛысыЙ_Чук-Иванчук 07.11.2007 23:08

Re: Sigel
 
Жираф 5500
Пень 3,0
1гб рама

твоя 20-30фпс
блица 13

Данил 07.11.2007 23:09

Re: Sigel
 
Замерил в б3д.
16 фпс стабильно 0о


Часовой пояс GMT +4, время: 06:19.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot