所以我有一个 3D 对象,我正在用以下灯光绘制:
GLfloat light_diffuse[] = {1.0, 1.0, 1.0, 0.9}; /* White light. */
GLfloat light_position[] = {300.0, 300.0, 300.0, 0.0};
glShadeModel(GL_SMOOTH);
glEnable(GL_COLOR_MATERIAL);
glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
glEnable(GL_LIGHT0);
glEnable(GL_LIGHTING);
当我在“正常”上下文(即没有 glOrtho)中绘制对象时,我的对象会按照我的预期被照亮。
但是,我正在研究对象的正交投影并为此目的使用 glOrtho(在 ModelView 矩阵上)。我在 glOrtho 调用之后初始化灯光,然后以与我在工作的情况下(3D 情况)完全相同的方式绘制对象。但是由于某种原因,照明不适用于正交投影,即,一旦我调用了 glOrtho。
这不是法线的问题,因为它适用于 3D 情况。我猜想通过 glOrtho 调用,所有东西都被压在一个薄层上,这解释了为什么灯光没有按预期表现......但老实说,我没有使用灯光的经验,所以这可能是错误的。
有谁知道发生了什么?