C++ 笔划绘制不正确(OpenGL)
我试图在一场雷击游戏中击中胸部,我几乎成功了,但由于某些原因,它画得不正确 屏幕截图显示了线路的一部分是如何消失的。当线在胸部时,就会发生这种情况。可能是纹理贴图或其他东西。在这种情况下,笔划通常通过块绘制 此外,当胸部处于黑暗中时,轮廓变暗,尽管我关闭了GL_照明 下面是一段代码,我用它来画笔划C++ 笔划绘制不正确(OpenGL),c++,opengl,C++,Opengl,我试图在一场雷击游戏中击中胸部,我几乎成功了,但由于某些原因,它画得不正确 屏幕截图显示了线路的一部分是如何消失的。当线在胸部时,就会发生这种情况。可能是纹理贴图或其他东西。在这种情况下,笔划通常通过块绘制 此外,当胸部处于黑暗中时,轮廓变暗,尽管我关闭了GL_照明 下面是一段代码,我用它来画笔划 glPushAttrib(GL_ALL_ATTRIB_BITS); glDisable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, 0); glD
glPushAttrib(GL_ALL_ATTRIB_BITS);
glDisable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, 0);
glDisable(GL_CULL_FACE);
glDisable(GL_LIGHTING);
glDisable(GL_DEPTH_TEST);
glLineWidth(2);
glColor3ub(255, 255, 255);
glBegin(GL_LINES);
glVertex3f(1, 0, 0);
glVertex3f(1, -1, 0);
glVertex3f(0, 0, 0);
glVertex3f(1, 0, 0);
glVertex3f(0, 0, 0);
glVertex3f(0, -1, 0);
glVertex3f(0, -1, 0);
glVertex3f(1, -1, 0);
glVertex3f(1, -1, 0);
glVertex3f(1, -1, -1);
glVertex3f(1, -1, -1);
glVertex3f(1, 0, -1);
glVertex3f(1, -1, -1);
glVertex3f(0, -1, -1);
glVertex3f(0, -1, -1);
glVertex3f(0, -1, 0);
glVertex3f(0, -1, -1);
glVertex3f(0, 0, -1);
glVertex3f(0, 0, -1);
glVertex3f(1, 0, -1);
glVertex3f(0, 0, -1);
glVertex3f(0, 0, 0);
glVertex3f(1, 0, -1);
glVertex3f(1, 0, 0);
glEnd();
glPopAttrib();
可能有什么问题?从您的屏幕截图来看,渲染顺序如下:
GL_DEPTH_TEST
,因此变为白色的片段(像素)(绘制轮廓的片段)将无法更新其深度信息。这是因为禁用GL_DEPTH_TEST
不仅会禁用深度测试,还会禁用更新片段的深度信息
因此,当您最终绘制胸部(重新启用深度测试)时,它将绘制在所有碎片上,这些碎片的深度值指示它们在胸部后面。也就是说,在画轮廓的碎片上
第三个屏幕截图上轮廓的黑色可能是由调用
glBindTexture(GL_TEXTURE_2D,0)引起的代码>。但这只是一种预感。评论不是为了进行深入讨论;这段对话已经结束。