void DrawSkybox(void) { // 关闭深度测试 glDisable(GL_DEPTH_TEST); // 关闭光照 glDisable(GL_LIGHTING); glColor3f(1.0, 1.0, 1.0); // 保存投影变换矩阵 glMatrixMode(GL_PROJECTION); glPushMatrix(); // 增大透视投影变换远平面距离 glLoadIdentity(); int viewport[4]; glGetIntegerv(GL_VIEWPORT, viewport); gluPerspective(60.0, (float)viewport[2]/(float)viewport[3], sky_box.size*0.01, sky_box.size*3.0); // 绘制天空盒 sky_box.Draw(); // 恢复投影变换矩阵 glPopMatrix(); glMatrixMode(GL_MODELVIEW); // 重新打开光照 glEnable(GL_LIGHTING); // 重新打开深度测试 glEnable(GL_DEPTH_TEST); }
void SkyboxObject::DrawItem ( int item, int param ) { glDisable(GL_LIGHTING); skybox.Draw(); glEnable(GL_LIGHTING); }