我无意中做了一个这样的操作:
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glDepthMask(GL_TRUE);
DrawCube();
glDepthMask(GL_FALSE);
}
结果立方体画不出来了。
换成这样就正常:
{
glDepthMask(GL_TRUE);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
DrawCube();
glDepthMask(GL_FALSE);
}
结论:当关闭深度缓冲写入的时候glClear(GL_DEPTH_BUFFER_BIT);无效,不能写入确实改变不了深度缓冲的数据啊,恍然大悟。