forum.boolean.name

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

pozitiffcat 20.08.2012 11:21

Ответ: C3D Engine
 
Долго не садился за комп, круто что сам разобрался. Фпс не выводится, потому что встроеной функции нет. Создаешь шрифт, и считаешь фпс по дельта таймингу.
Вот функция которой пользуюсь я
Код:

void drawfps()
{
        static ocge::IFont* font = 0;
        if(!font)
        {
                font = engine->createFont();
                font->loadTexture("bigfont.oi", 384);
        }
        static int FPS = 0;
        static int calcedFPS = 0;
        static float time = 0;
        static int dips = 0;
        static int tris = 0;
        time += engine->getDeltaTime();
        calcedFPS++;
        if(time >= 1)
        {
                time = 0;
                FPS = calcedFPS/1.0;
                calcedFPS = 0;
                dips = engine->getDips();
                tris = engine->getTrisRendered();
        }
        font->drawText("FPS = " + ocge::String::fromInt(FPS) + "\nDips: " + ocge::String::fromInt(dips) + "\nTris: " + ocge::String::fromInt(tris), 300, 10, glm::vec3(1,1,0));
       
}

далее после рендера сцены ее вызываешь

Жека 20.08.2012 14:16

Ответ: C3D Engine
 
Ага, по фпс ясно.
У тебя можно грузить ttf шрифты? А то моноширинный некрасивый.
Ещё просьба заглянуть в раздел форума Android, я там проблему изложил, может ты знаешь ответ.

pozitiffcat 23.08.2012 17:12

Ответ: C3D Engine
 
Чо та не нравится мой экспортер из макса, и бесит, что информации нет никакой причем нигде... сделаю-ка я по аналогии с конвертером текстур, будет конвертер из популярных форматов в формат движка, новый *.om (изображения *.oi) начну-ка я с fbx, был вроде уже опыт с ним.

pax 23.08.2012 17:36

Ответ: C3D Engine
 
Эм... а пользователям делать два действия? сначала в FBX, потом в твой формат?

pozitiffcat 23.08.2012 17:45

Ответ: C3D Engine
 
пользоавтель независимо от версии макса да и вообще среды экспортит во что угодно (пока тока fbx) и получает на выходе готовый формат + SDK для написания своих загрузчиков прям в движок из вашего формата. (abstract class)

pax 23.08.2012 17:58

Ответ: C3D Engine
 
Мне показалось ты хотел файлы конвертить, а не тащить в движок много конвертеров...

pax 23.08.2012 18:01

Ответ: C3D Engine
 
Есть кстати вот такая либа: http://assimp.sourceforge.net/

pozitiffcat 23.08.2012 22:00

Ответ: C3D Engine
 
неее всего один конвертер, он автоматом понимает что ты конвертишь а на выход файл для движка. В юнити тоже конвертер работает, тока там визуальная среда разработки и все автоматизировано, но по сути происходит тоже самое.

upd.
Исправил систему координат на правую, работает для перемещений и так далее, для геометрии тоже будет работать.

pozitiffcat 28.08.2012 12:03

Ответ: C3D Engine
 
Добавил таймеры и сделал конвертер статики из fbx в *.om
Пример работы таймеров
Код:

class Mytimer : public ocge::ITimerCallback
{
        ocge::INode* _node;
public:
        Mytimer(ocge::INode* node)
        {
                _node = node;
        }
        virtual void onTimer(ocge::ITimer* timer)
        {
                _node->rotate(glm::vec3(0,10,0));
        }
};

ocge::ITimer* timer = eng->createTimer(new Mytimer(om), 100);
timer->setEnabled(true);

(C) все права защищены =)

pozitiffcat 28.08.2012 13:23

Ответ: C3D Engine
 
Решил собрать версию:
+ таймеры
/ улучшена скорость загрузки и быстродействие не андроиде на 30%
+ две версии библиотек, release и debug
/ String теперь динамический
/ мелкие фиксы
/ левая матрица по умолчанию
/ мастер к eclipse теперь требует net framework 2.0 а не 4.0

качать

Mhyhr 28.08.2012 16:46

Ответ: C3D Engine
 
1) А таймер тикает в отдельном потоке или по какому-нибудь Engine::Update() ?
2) Не увидел как изменить период для уже созданного таймера.

pozitiffcat 28.08.2012 16:51

Ответ: C3D Engine
 
период я не сделал менять.. (спасибо за подсказку)
таймер в этом же потоке считается исходя из tick() операционной системы.
Считается, что таймер работает, ТОЛЬКО в основном цикле приложения. Например во время загрузок уровня его использовать нельзя. Движок однопоточный.
никакого engine update делать не надо все автоматом (обновляются и проверяются таймеры в порядке очереди создания, в самом начале логики цикла, а точнее после endDraw)


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

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