Ron*_*lic 11
首先,关闭深度写入/测试(如果先绘制天空盒并清除深度缓冲区,则无需关闭深度测试):
glDisable(GL_DEPTH_TEST);
glDepthMask(false);
Run Code Online (Sandbox Code Playgroud)
然后,将相机移动到原点并将其旋转为模型视图矩阵的反转:
// assume we're working with the modelview
glPushMatrix();
// inverseModelView is a 4x4 matrix with no translation and a transposed
// upper 3x3 portion from the regular modelview
glLoadMatrix(&inverseModelView);
Run Code Online (Sandbox Code Playgroud)
现在,绘制你的天空盒并转回深度写回:
DrawSkybox();
glPopMatrix();
glDepthMask(true);
glEnable(GL_DEPTH_TEST);
Run Code Online (Sandbox Code Playgroud)
glPush/PopAttrib()在绘制天空盒之后,您可能希望使用以确保其他状态正确设置(确保在必要时关闭照明或混合等内容).
您应该在绘制任何内容之前执行此操作,以便所有颜色缓冲区写入发生在您的天空框之上.