在大型几何GL_REPEAT OpenGL ES 2.0的纹理失真(OpenGL ES 2.0 te

2019-06-26 02:57发布

OpenGL ES 2.0的有纹理采样精度严重的问题-我见过的题目有类似的问题 ,但我还没有看到一个真正的解决这个“扭曲的OpenGL ES 2.0的质感”的问题呢。

这不涉及到纹理的图像格式或OpenGL颜色缓冲,好像它是一个精度误差。 我不知道具体是什么原因精度失败 - 它似乎并不像它的几何形状,导致这种扭曲的只是大小,因为简单地缩放顶点位置传递到顶点着色器不能解决问题。


下面是纹理失真的一些例子:

  • 扭曲纹理(基于OpenGL ES 2.0): http://i47.tinypic.com/3322h6d.png

  • 什么质地通常看起来像(也的OpenGL ES 2.0): http://i49.tinypic.com/b4jc6c.png

纹理问题仅限于基于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除以顶点位置收缩的几何形状和希望得到更准确的浮点精确度,但这并没有解决或减少纹理失真问题
  • 缩放模型视图或缩放投影矩阵没有帮助

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

    • 禁用纹理映射,或使用GL_NEAREST / GL_LINEAR什么都不做
    • 启用/禁用各向异性什么都不做
    • 使用GL_CLAMP即使仍然出现条纹效果
  • 分割传递到顶点着色器纹理COORDS,然后乘以他们回到在片段着色器正确的价值观,也不起作用

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

我想这个问题已经在一个点上得到解决 - 眼见的OpenGL ES 2.0为基础的游戏已经能够呈现大规模,非常详细的几何

Answer 1:

这是一般的纹理地图的问题。 没有设置限制纹理中旬线性插值。 这是硬件的工作原理。

您可以解决此问题通过它计算出纹理查找片段程序中使用最近过滤纹理查找您的模纹理砖的大小和位置,并手动做它的线性滤波。



文章来源: OpenGL ES 2.0 texture distortion on large geometry GL_REPEAT