我正在尝试使用我的引擎启动和运行所有内容,但我无法确定添加对象和灯光的顺序,以便正确呈现所有内容。
我在我的itialization中设置了我的投影和模型视图矩阵:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(75.0f,(GLfloat)width/(GLfloat)height, 0.1f , 1000.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
然后,当我渲染几何体时,我清除缓冲区并加载单位矩阵并更新我的相机。
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
// Camera updates
glRotatef(camera.anglePitch, 1.0f, 0.0f, 0.0f);
glRotatef(camera.angleYaw, 0.0f, 1.0f, 0.0f);
glTranslatef(-camera.position.x, -camera.position.y, -camera.position.z);
// Now render
level.render();
我对水平的看法是一个相机,我收集的是眼睛坐标移动。我正在尝试渲染我的关卡中的物体和灯光,并将它们显示在正确的位置。
我需要在世界的特定点添加对象。例如,(10,10,25)的圆环。在渲染这个圆环对象之前我还需要做些什么才能让它们在10,10,25正确显示?我需要渲染然后翻译它们吗?
此外,第2部分与灯光有关。这几乎是同一个问题。渲染说50,50,50的光时,我需要考虑什么?我可以正常定位灯还是再做一次我必须将灯转换到那里吗?或者我在想这个?
答案 0 :(得分:1)
如果我理解这个问题,我会同意你的想法。来自glTranslate和glRotate的变换将应用于模型视图矩阵,通过该矩阵将所有顶点相乘以提供稍后将在投影中剪切的眼睛坐标。同样的转换也适用于您的灯光。
您还可以使用glPopMatrix和glPushMatrix将模型视图矩阵的不同状态应用于不同的顶点。
我还会在http://www.opengl.org/resources/faq/technical/transformations.htm
中向您推荐问题9.070