OpenGL纹理问题

时间:2010-07-21 08:59:56

标签: iphone macos opengl opengl-es

我一直在研究跨平台3D引擎,但是我在OSX和iPhone / iPad上运行本机版本(在Simulator中使用系统GL库)。我遇到的问题是每个纹理在两个方向上略微移动(看起来只有一个纹素移位)如果我在Blender3D中没有看到同样的问题,我会在我的代码中看起来更多 - 在生成一些光照贴图后它变成了在颜色渐变上更明显。纹理文件是可以的和相同的纹理坐标(它只覆盖整个四边形)。

以下是它在混合器中的外观示例(2个三角形的tex坐标适用于范围内的角(0.0,0.0) - (1.0,1.0)):http://i28.tinypic.com/2yllfr5.png

您可以在标记四边形的右边和上边看到那些填充了错误纹理像素的内容。

任何想法如何解决它?我使用OSX 10.6,更新到最新版本。

1 个答案:

答案 0 :(得分:4)

问题解决了。对于那些在纹理边缘上纹理几何体后会发现人工制品的人来说,答案可能会有所帮助。发生这种情况有两个原因:

  • GL_TEXTURE_WRAP_S和GL_TEXTURE_WRAP_R默认设置为GL_REPEAT
  • 如果你在tex param上设置GL_CLAMP,那么它将与四边形纹理区域外的边框混合(默认为黑色)。

解决方案很简单,对于GL_TEXTURE_WRAP_S和GL_TEXTURE_WRAP_T,你必须使用GL_CLAMP_TO_EDGE将纹理坐标夹紧到0.0 + 0.5和1.0-0.5,在纹理的每一边留出0.5纹素的边距。

我希望它能帮助那些会发现类似问题的人。