繁体   English   中英

iPhone OpenGL-ES:阻止光源移动

[英]iPhone OpenGL-ES : Stopping the light source from moving

我一直在遵循照明指南,并为我的旋转立方体设置光源(通过3轴上的用户交互旋转)

但是,无论做什么,我都无法使光源保持在正确的位置,它似乎随立方体一起旋转。 因此,如果我旋转多维数据集,则其中的一部分点亮,而另一部分不点亮。

我正在做大量的矩阵操作。 我尝试重置矩阵,然后应用光源,尝试使用glLoadIdentity()重置视图。

我只是似乎无法保持静止。

static const Vertex3D light0Position[] = {{0.0, 10.0, 10.0}};
glLightfv(GL_LIGHT0, GL_POSITION, (const GLfloat *)light0Position); 

// Calculate light vector so it points at the object
static const Vertex3D objectPoint[] = {{8.0, 8.0, -4.0}};
const Vertex3D lightVector = Vector3DMakeWithStartAndEndPoints(light0Position[0], objectPoint[0]);
glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, (GLfloat *)&lightVector);

指定给OpenGL ES的位置和聚光灯方向在调用glLightfv时由当前的Modelview矩阵转换,并在调用glDrawArrays时由Modelview矩阵转换后应用于顶点。 / glDrawElements。 两者都不考虑投影矩阵的状态。

为了让我们了解您的转换可能会出错的原因,您需要准确显示将对象/世界/相机转换应用于模型视图矩阵的时间,以及与此相关的灯光属性说明和绘制位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM