iPad OpenGL ES: размер текстуры памяти - PullRequest
2 голосов
/ 27 января 2011

Я загружаю текстуру RGBA размером 1024 x 1024. Я ожидал, что размер текстуры в памяти будет 1024 x 1024 x 4 => 4 МБ.Но когда я пытаюсь напечатать потребление памяти, я вижу, что текстура занимает около 7 - 8 МБ, почти вдвое.Мне просто интересно, преобразует ли IPad каждый канал из байта в половину с плавающей запятой, поэтому есть ли способ указать, что каждый пиксель должен занимать 4 байта, а не 8 байтов.

Ответы [ 2 ]

0 голосов
/ 19 октября 2011

Самый простой способ указать это - использовать внутренний формат (например, GL_RGBA8 вместо GL_RGBA), хотя я не уверен, поддерживаются ли они в ES. Но я был бы удивлен, если бы устройство ES сохраняло стандартную текстуру RGBA с более чем 8 битами на канал.

Как вы определяете потребление памяти графическим процессором? Я бы предпочел предположить, что дополнительная память связана с другими важными ресурсами графического процессора, такими как VBO, и не забывать о самом кадровом буфере (памяти, в которую вы рендерится), который занимает разумное количество памяти. И помните, что при использовании mip-карт они дополнительно требуют около 33% памяти базовой текстуры.

И если вы говорите о размере данных ЦП, из которых вы создаете текстуру, то это никак не связано с размером текстуры и зависит только от размера ваших собственных данных.

0 голосов
/ 18 октября 2011

Вы должны указать тип и внутренний формат вашей текстуры при ее создании с помощью glTexImage2D.

Возможно, у вас установлено значение GL_FLOAT или что-то в этом роде.

Поиск документации здесь: http://www.opengl.org/sdk/docs/man/xhtml/glTexImage2D.xml

...