OpenGL - 多边形边缘上的奇怪线条

时间:2013-01-26 23:33:33

标签: opengl polygon

在我正在制作的类似Minecraft的游戏中,我在多边形边缘上获得了这些奇怪的线条:

我正在使用纹理图集,被GL_CLAMP_TO_EDGE夹住。

我尝试将GL_TEXTURE_MIN_FILTER设置为GL_LINEARGL_NEAREST,甚至使用mipmap,但它没有任何区别。我也尝试将纹理坐标插入半个像素,或使用x16各向异性过滤,没有成功。

任何帮助?

编辑 - 立方体的顶面正在呈现如下:

            glBegin(GL_QUADS);

            glTexCoord2f(0f, 0f);
            glVertex3f(x, y + 1f, z);

            glTexCoord2f(0f, 1 / 8f);
            glVertex3f(x, y + 1f, z + 1f);

            glTexCoord2f(1 / 8f, 1 / 8f);
            glVertex3f(x + 1f, y + 1f, z + 1f);

            glTexCoord2f(1 / 8f, 0f);
            glVertex3f(x + 1f, y + 1f, z);

            glEnd();

1 个答案:

答案 0 :(得分:0)

这看起来像经典纹理像素< - >屏幕像素fenceposting问题给我。请在此处查看我的答案:https://stackoverflow.com/a/5879551/524368

另一个问题可能是,立方体的角坐标不完全相同。浮点数具有一些固有误差,如果您通过向网格中添加一些浮点数来在网格中排列这些立方体,则可能会发生顶点位置稍微偏离,并且由于舍入误差,您会看到深度对抗。要解决这个问题的两件事:第一:如果两个立方体的面部接触,则不要渲染它们。第二步:使用整数坐标来布局立方体网格,并仅在提交到OpenGL时将顶点转换为浮点,或者根本不进行转换。