这是我对opengl的设置,以防它们很重要:
glViewport(0,0,w,h); //w=800, h=600
glShadeModel(GL_SMOOTH);
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClearDepth(1.0f);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
有一段时间我认为剪裁平面将适用于 gl_Position.z 在 -1 到 1 之外的任何东西。但即使我在着色器中强制 gl_Position.z 为常数:
gl_Position.z = -0.01;
仍然存在基于 gl_Position.w 的正确 z 缓冲和裁剪!那么规则是什么?