OpenGL网格+镜子变换=错误的照明

问题描述 投票:0回答:1

通常,您需要向3D图形场景添加同一对象的镜像副本,例如车门或左鞋的右版本。当在包含三角形网格(顶点,三角形和法线)的显示列表上进行镜像转换时,会出现照明问题。

[我们能够检测到4x4转换矩阵内的反射,但是我们不知道如何简单地更改OpenGL状态标志来回收相同的显示列表(以正确的照明方式绘制它)。

我正在考虑glFrontFace()GL_NORMALIZE

您认为不建立镜像对象的新显示列表就可以吗?如果是,如何?

opengl 3d cad
1个回答
0
投票

考虑到您对“显示列表”和GL_NORMALIZE的使用,听起来您正在使用老式的固定功能OpenGL。您将要启用一个称为双面照明

的功能。
glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);

作为旁注,如果启用了背面剔除,则在绘制翻转的几何图形时还需要翻转剔除方向:

glFrontFace(GL_CW); // the default setting is GL_CCW

祝您好运,我希望您能够现代化;着色器很棒!

© www.soinside.com 2019 - 2024. All rights reserved.