ПрограммированиеФорумГрафика

Проседание FPS в приложении на OpenGl на ноутбуке с видеокартой NVidia (6 стр)

Страницы: 1 2 3 4 5 6
#75
21:34, 22 авг 2013

Assimilator
Вам все компоненты по классам распределить надо, вы же на c++ пишите а не на c.
А то у вас куча функций, половина переменных в глобале висит никаких абстракций , так не пишут на c++...

#76
21:38, 22 авг 2013

Автор, посмотри ЛЮБОЙ 2Д двиг и пользуй его.
HGE/SFML/cocos2d-x - без разницы.

#77
21:42, 22 авг 2013

CasDev
> Автор, посмотри ЛЮБОЙ 2Д двиг и пользуй его.
ну это никак не связано. может автор хочет писать движок, а не игру.

#78
23:52, 22 авг 2013

GoshaSW
Короче, вам нужно четко обозначить где движок а где игровой код желательно скрывать движок за абстрактными классами.
Создать менеджеры юнитов, карты, ресурсов, сцены...
Иначе ваше текущее приложение кошмар какое неповоротливое =\
А я пока VisualStudio поставлю, а то все чаще сталкиваюсь с проектами из студии а кодблокс может импортировать далеко не все солюшены.
Заодно, как поставлю, попробую ваш проект собрать и посмотреть какие оптимизации можно прикрутить =)

#79
7:30, 23 авг 2013

Сегодня тестировал своё приложение (к сожалению аналогичная проблема) на nVidia.

и что я заметил, что интегрированная все соки из себя давит, ~150 FPS.

А nVidia забила большой и жирный ... на FPS и не даёт больше 60, те хоть 10к объектов, хоть 2, FPS выше 60 не растёт, печаль.

#80
7:31, 23 авг 2013

QtProger
Мсье, это называется VSync =)

#81
10:23, 23 авг 2013

во точно VSync ))

#82
10:24, 23 авг 2013

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

#83
10:44, 23 авг 2013

QtProger
> эхх можно было бы его программно отключать, или хотябы свой ставить)) а то фиг
> угадаешь у кого какая частота обновления экрана

    //VSync


    typedef BOOL (APIENTRY * WGLSWAPINTERVALEXTFUNC)(int);
    WGLSWAPINTERVALEXTFUNC wglSwapIntervalEXT = WGLSWAPINTERVALEXTFUNC(wglGetProcAddress("wglSwapIntervalEXT"));
    
    if(wglSwapIntervalEXT)
    {
        if(params.VSync)
            wglSwapIntervalEXT(1); // On 
        else
            wglSwapIntervalEXT(0); // Off
    }
    else
    {
        io::Log::println("VSync not supported. (WAT!?)",ELL_ERROR);
    }
Изображение
#84
12:48, 23 авг 2013
    typedef BOOL (APIENTRY * wglSwapIntervalEXT_Func)(int);
    wglSwapIntervalEXT_Func wglSwapIntervalEXT =
      wglSwapIntervalEXT_Func(wglGetProcAddress("wglSwapIntervalEXT"));
    if(wglSwapIntervalEXT) wglSwapIntervalEXT(0);

проверил на ноутбуке повышение с 60 до 220.

#85
12:57, 23 авг 2013

QtProger
Ну так я плохого не посоветую =)

#86
13:00, 23 авг 2013

GoshaSW
=)

Страницы: 1 2 3 4 5 6
ПрограммированиеФорумГрафика

Тема в архиве.