glGenTextures - есть ли ограничение на количество текстур? - PullRequest
11 голосов
/ 15 июня 2011

Есть ли ограничение на количество текстур, которые могут быть созданы в OpenGL - то есть с glGenTextures?

Я знаю, что есть некоторые ограничения, налагаемые GL, например.количество текстур, которые можно использовать в фрагментном шейдере.Однако я не смог найти какую-либо документацию, касающуюся общего числа целочисленных «имен текстур», доступных для использования.

Ответы [ 2 ]

18 голосов
/ 15 июня 2011

Единственный предел для glGenTextures определяется шириной в битах имени текстуры ( GLint ), которая составляет 32 бита; действительно, количество имен текстур может быть таким большим, что у вас, вероятно, никогда не возникнет проблем при генерации имен текстур.

Ограничение для текстур ограничено памятью графической системы. Реализация OpenGL знает размер и формат текстуры только тогда, когда приложение отправляет данные текстуры с использованием glTexImage2D (и других функций glTexImage *, если они доступны), которые определяют ширину, высоту и внутренний формат текстуры: имея эти параметры Можно определить объем памяти, необходимый для хранения данных текстуры.

Чтобы проверить ошибки, вы должны запросить ошибку OpenGL, используя glGetError , которая возвращает GL_OUT_OF_MEMORY, если операции не удается выделить необходимую память. Эта ошибка также может быть возвращена glGenTextures и glTexImage2D и т. Д.

Эта ошибка, скорее всего, будет возвращена glTexImage2D и т. Д., Поскольку память, необходимая для выделения текстуры, намного больше, чем память, необходимая для маркировки имени текстуры как используемого.

3 голосов
/ 15 июня 2011

Нет ограничений на количество имен текстур, которые вы можете генерировать. Однако существует ограничение на объем текстурной памяти, поэтому реализация по-прежнему может завершиться ошибкой вызова glGenTextures из-за ограничений памяти.

Так что не создавайте кучу имен текстур, а затем не используйте их. Создайте то, что вам нужно .

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