gpt4 book ai didi

java - OpenGL 中透明对象中的三角形/线条

转载 作者:行者123 更新时间:2023-12-02 07:20:35 41 4
gpt4 key购买 nike

当我绘制具有透明纹理的平面(例如房屋的 window )时,我看到了不应该出现的线条或三角形。我该如何解决这个问题?

triangles
(来源:troll.ws)

这是我用来绘制一个窗口的方法。我暂时启用混合以使窗口透明。

 static void drawWindow(int startX, int startY, int endX, int endY) {

glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
Textures.window.bind();
glPushMatrix();
glTranslatef(startX, startY, 0);

glBegin(GL_QUADS);
glTexCoord2d(1, 1);
glVertex3d(0, 0, 0);
glTexCoord2d(0, 1);
glVertex3d(endX - startX, endY - startY, 0);
glTexCoord2d(0, 0);
glVertex3d(endX - startX, endY - startY, 200);
glTexCoord2d(1, 0);
glVertex3d(0, 0, 200);
glEnd();
glDisable(GL_TEXTURE_2D);
glDisable(GL_BLEND);

glPopMatrix();
}

最佳答案

这是由于打开了多边形平滑而导致的,这会导致 GL 以不同的方式渲染多边形的边缘,从而导致 Alpha 混合出现问题。

这是一种过时的 AA 形式,因此最好将其关闭,并使用全场景抗锯齿方法,例如 MSAA 或其他类似技术。

标准建议也适用 - 固定功能管道已过时且已弃用,通常不推荐。

关于java - OpenGL 中透明对象中的三角形/线条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14298140/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com