通常,您需要向3D图形场景添加同一对象的镜像副本,例如车门或左鞋的右版本。当在包含三角形网格(顶点,三角形和法线)的显示列表上进行镜像转换时,会出现照明问题。
[我们能够检测到4x4转换矩阵内的反射,但是我们不知道如何简单地更改OpenGL状态标志来回收相同的显示列表(以正确的照明方式绘制它)。
我正在考虑glFrontFace()
,GL_NORMALIZE
等
您认为不建立镜像对象的新显示列表就可以吗?如果是,如何?
考虑到您对“显示列表”和GL_NORMALIZE
的使用,听起来您正在使用老式的固定功能OpenGL。您将要启用一个称为双面照明:
glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
作为旁注,如果启用了背面剔除,则在绘制翻转的几何图形时还需要翻转剔除方向:
glFrontFace(GL_CW); // the default setting is GL_CCW
祝您好运,我希望您能够现代化;着色器很棒!