2

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

我正在使用纹理图集,被GL_CLAMP_TO_EDGE.

我尝试使用设置GL_TEXTURE_MIN_FILTERto 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();
4

1 回答 1

0

这对我来说就像经典的纹理像素 <-> 屏幕像素围栏问题。在这里查看我的答案:https ://stackoverflow.com/a/5879551/524368

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

于 2013-01-27T12:58:05.883 回答