小编use*_*596的帖子

大型几何体GL_REPEAT上的OpenGL ES 2.0纹理扭曲

OpenGL ES 2.0在纹理采样方面存在严重的精度问题 - 我见过类似问题的主题,但我还没有看到这个"扭曲的OpenGL ES 2.0纹理"问题的真正解决方案.

这与纹理的图像格式或OpenGL颜色缓冲区无关,似乎是精度错误.我不知道究竟是什么原因导致精度失败 - 它似乎不仅仅是导致这种失真的几何尺寸,因为简单地缩放传递给顶点着色器的顶点位置并不能解决问题.


以下是纹理失真的一些示例:

纹理问题仅限于OpenGL ES 2.0上的小规模几何体,否则纹理采样看起来是正常的,但是颗粒效果会逐渐恶化顶点数据距离XYZ原点(0,0,0)

桌面OpenGL上不会出现这些纹理问题(在Windows XP,Windows 7和Mac OS X下正常工作)

我只看到Android,iPhone或WebGL上出现问题(类似于OpenGL ES 2.0)


所有纹理都是2的幂,但问题仍然存在

  • 缩放顶点数据 - 顶点的XYZ位置的值在以下范围内:-65536到+65536浮点

    • 我意识到这是大的,所以我试图用1024除以顶点位置收缩的几何形状和希望得到更准确的浮点精确度,但这并没有解决或减少纹理失真问题
  • 缩放模型视图或缩放投影矩阵没有帮助

  • 更改纹理过滤选项没有帮助

    • 禁用mipmapping或使用GL_NEAREST/GL_LINEAR不会执行任何操作
    • 启用/禁用各向异性不会做任何事情
    • 即使使用GL_CLAMP,仍会出现条带效应
  • 将传递给顶点着色器的纹理坐标划分,然后将它们乘以片段着色器中的正确值,也不起作用

  • 精密highp sampler2D,highp浮动,highp INT -在片段或顶点着色器没有任何改变(lowp/mediump也不起作用)

我认为这个问题必须在某一点上得到解决 - 看到基于OpenGL ES 2.0的游戏已经能够渲染出大规模,高度详细的几何

iphone rendering texture-mapping distortion opengl-es-2.0

6
推荐指数
1
解决办法
1371
查看次数