Java OpenGL中透明对象中的三角形/线
当我用透明纹理(例如房子的窗户)绘制平面时,我会看到线或三角形不应该出现的地方。我怎样才能解决这个问题Java OpenGL中透明对象中的三角形/线,java,opengl,jogl,Java,Opengl,Jogl,当我用透明纹理(例如房子的窗户)绘制平面时,我会看到线或三角形不应该出现的地方。我怎样才能解决这个问题 (来源:) 下面是我用来画一个窗口的方法。我启用临时混合以使窗口透明 static void drawWindow(int startX, int startY, int endX, int endY) { glEnable(GL_TEXTURE_2D); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_M
(来源:) 下面是我用来画一个窗口的方法。我启用临时混合以使窗口透明
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或其他类似技术
标准建议也适用-固定功能管道过时且不推荐使用,通常不推荐使用。为什么要使用即时模式?自从vertex阵列可用以来,使用IM一直是不被鼓励的,因此近20年来一直如此。为什么你要硬编码你的几何图形呢?将几何体放入运行时加载的文件中,并使用顶点数组进行渲染。是否启用了多边形平滑?@JasonD感谢您的评论。是的,它是打开的。当我禁用它时,线路确实消失了。我应该关掉它吗?是的,它没有任何用处,给你带来了麻烦。改用更现代的抗锯齿形式(MSAA等)。