вопросы о glBitmap - PullRequest
       12

вопросы о glBitmap

3 голосов
/ 27 июля 2010

Я работаю с унаследованным фрагментом кода в некоторых вещах для работы, которые используют вызовы glBitmap () для рисования растровых значков.Моя проблема в том, что это довольно медленно, когда вы начинаете рисовать около 1000 иконок одновременно.Он замедляется до частоты обновления 1-2 секунды, и я хотел бы посмотреть, смогу ли я сделать это быстрее, чем это.

Сначала я должен описать, как работает текущий код.Значки растрового изображения представляют собой изображения размером 32x32 с одним битом на пиксель, предварительно загруженные в память.Для каждого нарисованного значка код выполняет следующее:

glNewList glRasterPos2f glBitmap glEndList

, а затем вызывается glCallList () в списке отображения.Я знаю, что вызов glCallList (), повторяющийся несколько раз для каждого значка, может быть очень медленным, но некоторая архитектура, лежащая в основе кода, делает изменение довольно трудным.Все это?У меня достаточно свободного времени, чтобы делать подобные вещи, но я должен быть в состоянии оправдать это перед руководством.Будет ли переход от glBitmap () к использованию чего-то вроде квадратов с наложенными текстурами быстрее?Могу ли я добавить несколько вызовов glBitmap () в один список отображения и просто вызвать glCallList () один раз для всех значков?

В прошлом я немного занимался GL, но это было давно.Я довольно ржавый, но я могу понять большинство из них.

Ответы [ 2 ]

5 голосов
/ 27 июля 2010

Текстурированные четырехугольники полностью. Я использовал это для рендеринга текста (номера осей для графиков) и получил 60 FPS с несколькими сотнями цифр на экране, с интегрированным видео Intel (пару лет назад, так было поколение GMA945).

Поместите все содержимое значков в одну текстуру и просто вызовите glTexCoord, чтобы выбрать нужную часть, тогда вы избежите переключения текстур.

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

1 голос
/ 28 июля 2010

Согласовано: используйте выровненные по экрану квады. Настройте матрицу вида модели на идентичность, а матрицу проекции на gluOrtho (0,0, 800, 600, 1, -1). Нарисуйте свои четырехугольники в (х, у, 0). (остерегайтесь их ориентации)

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

Никогда не используйте glBitmap или любую другую функцию, которая напрямую обращается к кадровому буферу (glGetPixels & co)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...