Пустая текстура при отключении мипмапинга? - PullRequest
0 голосов
/ 23 февраля 2011

Я не справляюсь со всеми тонкостями OpenGL, так что извините, если мой вопрос недостаточно точен

На iPhone я загружаю текстуру (изображение в формате png), как это

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, iTextureSize.width, iTextureSize.height, 0, GL_RGBA, GL_UNSIGNED_BYTE, textureData); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_FILTER, GL_NEAREST);

Что работаетхорошо, но я заметил, что это выделяет ровно в два раза размер textureData.Я читал на форумах, что это может быть вызвано мипмапингом, поэтому я попытался отключить его, комментируя строки glTexParameteri, но тогда мои текстуры пустые.

Это проблема, это мой параметр загрузки текстуры в моемпоказать код?Мой код дисплея выглядит следующим образом

glTexCoordPointer(2, GL_FLOAT, 0, texture);
glVertexPointer(DIMENSION,  GL_SHORT,  0, iVertex);
glBindTexture(GL_TEXTURE_2D, (GLuint)textureID);
glDrawArrays(GL_TRIANGLE_FAN,  0, iVertexCount);

Ответы [ 3 ]

2 голосов
/ 26 февраля 2011

Теперь, когда у вас отключены мип-карты, вы пытались отключить повтор текстуры?

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

Если ширина или высота вашей текстуры - это значение, которое не является степенью двойки, вы попадаете в«Текстура не-силы-двух» (NPOT), которая обрабатывается с ограничениями для iPhone, см .:

Рендеринг в текстуру не-власти двух в iPhone

1 голос
/ 23 февраля 2011

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

Каким образом вы пришли к выводу, что вы вызываете выделение текстуры в два раза больше, и как вы пришли к выводу, что это ошибка?Это зависит от драйвера GL, как он распределяет память внутри и где он кэширует то, что хочет.Нет оснований предполагать, что double является неправильным, особенно если вы добавляете видеопамять в основную память.

Более того, хранение карт MIP добавляет одну треть к вашим общим требованиям к хранилищу, а не 100%.

0 голосов
/ 23 февраля 2011

Если вы не устанавливаете свои фильтры, вы получаете минимальный фильтр по умолчанию GL_NEAREST_MIPMAP_LINEAR, для которого требуется полный набор мипмапов.

...