Прежде всего, я знаю, что списки отображений устарели в OpenGL 3.0 и удалены в 3.1.Но я все еще должен использовать их в этом университетском проекте, для которого используется OpenGL 2.1.
Каждая статья или учебник, который я читаю в списках отображения, использует их для какого-то объекта, который рисуется, например, несколько раздеревья.Что-то не так в создании одного списка для одного объекта?
Например, у меня есть объект (в формате .obj) для здания.Это конкретное здание нарисовано только один раз.Для базового анализа производительности у меня есть текущие кадры в секунду в строке заголовка окна.
Делая это так:
glmDraw(objBuilding.model, GLM_SMOOTH | GLM_TEXTURE);
Я получаю около 260 FPS.Если вы не относитесь к библиотеке GLM, функция glmDraw
в основном выполняет несколько вызовов glVertex
.
Но делает это так:
glNewList(gameDisplayLists.building, GL_COMPILE);
glmDraw(objBuilding.model, GLM_SMOOTH | GLM_TEXTURE);
glEndList();
glCallList(gameDisplayLists.building);
Я получаю около 420FPS.Конечно, частота обновления экрана не обновляется так быстро, но, как я уже сказал, это простой и простой способ измерить производительность.
Для меня это выглядит намного лучше.
I 'Я также использую списки отображения, когда у меня есть какой-то тип объекта, который я повторяю много раз, например, защитные башни.Опять же, что-то не так делает для одного объекта или я могу продолжать делать это?