【问题标题】:Loading a PVR, texture problems加载PVR,纹理问题
【发布时间】:2011-12-07 12:43:20
【问题描述】:

我在从 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。

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

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

p.s 忽略我的黑点。

【问题讨论】:

  • 你确定你的贴图像素数据的格式和类型是RGBA和Unsigned byte吗?
  • @arasmussen,不是 100% 没有。有什么办法可以查到吗?我认为这是标准。
  • “我越来越奇怪,不连贯的图纸”。截图时间。
  • @genpfault 我可以截图吗?关于这个?
  • PVR 是一种压缩纹理格式,那么,您究竟传递给 glTexImage2D 的是什么?压缩文件?那是不对的。

标签: c++ opengl textures tga


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多