在我正在制作的类似Minecraft的游戏中,我在多边形边缘上获得了这些奇怪的线条:
我正在使用纹理图集,被GL_CLAMP_TO_EDGE
夹住。
我尝试将GL_TEXTURE_MIN_FILTER
设置为GL_LINEAR
,GL_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();
答案 0 :(得分:0)
这看起来像经典纹理像素< - >屏幕像素fenceposting问题给我。请在此处查看我的答案:https://stackoverflow.com/a/5879551/524368
另一个问题可能是,立方体的角坐标不完全相同。浮点数具有一些固有误差,如果您通过向网格中添加一些浮点数来在网格中排列这些立方体,则可能会发生顶点位置稍微偏离,并且由于舍入误差,您会看到深度对抗。要解决这个问题的两件事:第一:如果两个立方体的面部接触,则不要渲染它们。第二步:使用整数坐标来布局立方体网格,并仅在提交到OpenGL时将顶点转换为浮点,或者根本不进行转换。