0

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

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

我越来越奇怪,不连贯的图纸。我将把我正在制作的整个纹理文件传递给我的图形窗口类,然后要求它获取无符号整数的 id,然后创建纹理。

这是我的加载纹理类。

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。

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

任何想法或帮助将不胜感激。

ps忽略那个是我的黑点。

在此处输入图像描述

4

1 回答 1

1

看看这个帖子。本质上,由于 PVR 被压缩,您不能使用 glTexImage2D 发送纹理,它假定未压缩的纹素(在您发布的代码中每个纹素是 4 个无符号字节)。您必须使用 glCompressedTexImage2D 来处理压缩格式。查看此 OpenGL es扩展以了解要使用的内部格式。如果您不太确定选择哪一个,或者只是想查看压缩纹理,PVRTexTool看起来是一个不错的工具。

于 2011-12-07T04:43:20.567 回答