我在从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忽略那是我的黑点。
答案 0 :(得分:1)
看看这个post。基本上,当PVR被压缩时,你不能使用glTexImage2D发送纹理,glTexImage2D假设未压缩的纹素(每个纹素在你发布的代码中是4个无符号字节)。您必须使用glCompressedTexImage2D来处理压缩格式。看看这个OpenGL es extension,了解要使用的内部格式。如果您不太确定要选择哪一个或只想查看压缩纹理,PVRTexTool看起来就像一个不错的工具。