glGenTextures касается скорости и памяти - PullRequest
3 голосов
/ 29 июня 2009

Я изучаю OpenGL и недавно узнал о glGenTextures. Хотя некоторые сайты объясняют, что он делает, я чувствую себя вынужденным задаться вопросом, как он ведет себя с точки зрения скорости и, особенно, памяти.

Что именно я должен учитывать при вызове glGenTextures? Должен ли я рассмотреть выгрузку и перезагрузку текстур для лучшей скорости? Сколько текстур нужно стандартной игре? Какие обходные пути существуют, чтобы обойти ограничения памяти и скорости?

1 Ответ

4 голосов
/ 29 июня 2009

Согласно руководству , glGenTextures выделяет только «имена» текстур (например, идентификаторы) без «размерности». Таким образом, вы фактически не выделяете текстурную память как таковую, и издержки здесь незначительны по сравнению с фактическим выделением текстурной памяти.

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

Что касается вашего вопроса о типичной игре - какую игру вы создаете? Консольные игры начинают заполнять емкость диска Blu-Ray (я работал над названием для PS3, которое изначально не проектировалось для Blu-Ray). Большая часть этого пространства - текстуры. С другой стороны, загружаемые веб-игры гораздо более ограничены.

По сути, вам нужно поработать с разумным игровым дизайном и составить оценку: 1. Общее количество текстур, используемых вашей игрой. 2. Максимальное количество текстур, используемых одновременно.

Затем вам нужно взглянуть на ваше целевое оборудование и решить, как сделать все это подходящим.

Вот ссылка на старую статью для разработчиков игр, которая поможет вам начать: http://number -none.com / удар / бумага / implementing_a_texture_caching_system.pdf

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