我有一个非常简单的OpenGL(3.2)设置,没有光照,透视投影和简单的着色器程序(应用投影转换并使用texture2D从纹理中读取颜色)。OpenGL透视纹理闪烁
相机正在俯视负Z轴,并在纹理的x-y平面上绘制几个墙壁和立柱(http://i43.tinypic.com/2ryszlz.png)。
现在我在x-y平面上移动摄像机,它看起来像这样: http://i.imgur.com/VCrNcly.gif。
我现在的问题是:如何处理壁纹理的闪烁?
由于摄像头居中在墙壁上,视角在纹理上压缩了屏幕的纹理,因此屏幕上的一个像素实际上是纹理上的几个像素,但只有一个被选择用于显示。从我在着色器中访问的信息中,我看不到如何执行插值所需颜色的操作。由于这看起来像几乎每个3D应用程序都应该有的问题,所以解决方案可能非常简单(我希望它?)。
你的'#版本'指令在哪里?为什么在GL 3.2代码中使用不推荐使用的GLSL内置变量? imgur有什么问题?你的纹理坐标在哪里? – genpfault
我不认为它的相关性是它的一个普遍问题。我对OpenGL和GLSL相当陌生,这几乎只是从一些示例中复制出来的,似乎很实用。刚刚发布它,表明我不在GLSL中执行任何奇特操作。 – VolrathMR
各向异性过滤可以帮助*很多这种情况下,但在极端情况下,你只需要调整纹理。 – Grimmy