繁体   English   中英

lwjgl(opengl)纹理被涂抹

[英]lwjgl (opengl) texture getting smeared

我在Java(LWJGL)中使用OpenGL遇到了麻烦,我想知道是否有人可以帮助我解决问题:-)

基本上,每当我对简单地形进行纹理处理时,为它创建的纹理都会被涂抹。 这是绘制图块的代码

private void drawTile(double xPos, double zPos, double height1, double height2, double height3, double height4) {
    GL11.glColor3ub((byte) 255, (byte) 255, (byte) 255);
    GL11.glBindTexture(GL11.GL_TEXTURE_2D, Game.textureId);
    GL11.glBegin(GL11.GL_QUADS);
    double xIn = xPos * 0.15;
    double xOut = xIn + 0.15;
    double zIn = zPos * 0.15;
    double zOut = zIn + 0.15;

    // System.out.println(xIn + ", " + zIn + " -> " + xOut + ", " + zOut);

    GL11.glVertex3d(xIn, height1, zIn);
    GL11.glTexCoord2d(0d, 0d);

    GL11.glVertex3d(xOut, height2, zIn);
    GL11.glTexCoord2d(1d, 0d);

    GL11.glVertex3d(xOut, height3, zOut);
    GL11.glTexCoord2d(1d, 1d);

    GL11.glVertex3d(xIn, height4, zOut);
    GL11.glVertex2d(0d, 1d);

    GL11.glEnd();
}

这是我的纹理外观的屏幕截图

草

但是,这就是我渲染4x4网格后的结果。

搞乱渲染

提前致谢!

您有4个vertex3d调用,3个texture2d调用和1个vertex2d调用。 看起来像是一个简单的错字。

GL11.glVertex3d(xIn, height4, zOut);
GL11.glVertex2d(0d, 1d);
//   ^^^^^^^^^^ Is not a texture2d call

另外,我非常确定您需要在相应的顶点调用之前放置texture2D调用。 顶点调用告诉GL您已经完成了该顶点,并且将继续进行下一个顶点。

这两个问题最终都有相同的结果。 您的两个顶点(在本例中为西顶点)都以相同的纹理值结束,因此当边缘像素在整个三角形上重复时,您会看到带有线条的独特直角三角形。

尝试以此替换您的开始/结束内容:

GL11.glTexCoord2d(0d, 0d);
GL11.glVertex3d(xIn, height1, zIn);

GL11.glTexCoord2d(1d, 0d);
GL11.glVertex3d(xOut, height2, zIn);

GL11.glTexCoord2d(1d, 1d);
GL11.glVertex3d(xOut, height3, zOut);

GL11.glTexCoord2d(0d, 1d);
GL11.glVertex3d(xIn, height4, zOut);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM