加载PVR,纹理问题

时间:2011-12-06 15:08:06

标签: c++ opengl textures tga

我在从PVR加载tga时遇到问题。

我相信PVR正确加载,但是当我尝试将纹理加载到OpenGL中时,我遇到了问题。

我得到奇怪的,不连贯的图画。我将把我正在制作的整个纹理文件传递给我的图形窗口类,然后让它获取id为无符号的int,然后创建纹理。

这是我的加载纹理类。

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);

我想知道原因是什么。这个方法不止一次被调用,所以我想知道你是否可以覆盖以前生成的纹理而没有任何问题?您是否必须使用胶合来生成纹理?我正在尝试加载tga。

我知道这可以使用正常保存的图像成功绘制。

任何想法或帮助都会受到赞赏。

p.s忽略那是我的黑点。

enter image description here

1 个答案:

答案 0 :(得分:1)

看看这个post。基本上,当PVR被压缩时,你不能使用glTexImage2D发送纹理,glTexImage2D假设未压缩的纹素(每个纹素在你发布的代码中是4个无符号字节)。您必须使用glCompressedTexImage2D来处理压缩格式。看看这个OpenGL es extension,了解要使用的内部格式。如果您不太确定要选择哪一个或只想查看压缩纹理,PVRTexTool看起来就像一个不错的工具。