Загрузка PVR, проблемы с текстурой - PullRequest
0 голосов
/ 06 декабря 2011

У меня проблема с загрузкой tga из PVR.

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

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

Это мой класс текстур загрузки.

glGenTextures(animalTexture->getID(), &texture[0]);
glBindTexture(GL_TEXTURE_2D, texture[0]);
glTexImage2D(GL_TEXTURE_2D, 0, 3, animalTexture->getWidth(),animalTexture->getHeight(), 0, GL_RGBA, GL_UNSIGNED_BYTE, animalTexture->getImageData());
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

Мне интересно, в чем причина. Этот метод вызывается более одного раза, поэтому мне интересно, можете ли вы переписать ранее созданную текстуру без каких-либо проблем? Нужно ли использовать клей для создания текстуры? Я пытаюсь загрузить ТГА.

Я знаю, что это успешно рисуется с обычным сохраненным изображением.

Будем благодарны за любые идеи или помощь.

p.s Проигнорируйте черное пятно, которое было мной.

enter image description here

1 Ответ

1 голос
/ 07 декабря 2011

Посмотрите на этот пост . По сути, поскольку PVR сжат, вы не можете отправить текстуру, используя glTexImage2D, которая предполагает несжатый тексель (каждый тексель состоит из 4-х беззнаковых байтов в коде, который вы разместили). Вместо этого вы должны использовать glCompressedTexImage2D, который обрабатывает сжатые форматы. Взгляните на это расширение OpenGL es , чтобы узнать, какой внутренний формат использовать. Если вы не совсем уверены, какую из них выбрать или просто хотите просмотреть сжатые текстуры, PVRTexTool выглядит как хороший инструмент.

...