OpenGL ES 2.0在纹理采样方面存在严重的精度问题 - 我见过similar problem的主题, 但我还没有看到这个“扭曲的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)0 p>
桌面OpenGL上不会出现这些纹理问题(在Windows XP,Windows 7和Mac OS X下正常工作)
我只看到Android,iPhone或WebGL上出现此问题(类似于OpenGL ES 2.0)
所有纹理都是2的强弱,但问题仍然存在
缩放顶点数据 - 顶点X Y Z位置的值在以下范围内: -65536到+65536浮点
缩放模型视图或缩放投影矩阵无济于事
更改纹理过滤选项无效
将传递给顶点着色器的纹理坐标划分,然后将它们再次移回到片段着色器中的正确值,也不起作用
precision highp sampler2D,highp float,highp int - 在片段或顶点着色器中没有任何改变(lowp / mediump也不起作用)
我认为这个问题必须在某一点上得到解决 - 看到基于OpenGL ES 2.0的游戏已经能够呈现大规模,高度详细的几何体
答案 0 :(得分:1)
这是通常的纹理图集问题。没有设置来限制纹理中间的线性插值。这就是硬件的工作原理。
您可以通过在片段程序中使用最近的滤镜纹理查找来解决此问题,该片段程序计算纹理查找模块的纹理图块大小和位置,并手动进行线性过滤。