【发布时间】:2011-12-13 01:01:48
【问题描述】:
我正在尝试使用我的引擎启动并运行所有内容,但无法确定添加对象和灯光以正确渲染所有内容的顺序。
我在我的初始化中设置了我的投影和模型视图矩阵:
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 时我必须考虑什么?我可以正常定位灯还是再做一次,我必须把它翻译到那里吗?还是我想多了?
【问题讨论】:
-
你的问题有几点不清楚:首先,你指的是什么原点,眼睛坐标空间的原点还是物体坐标空间的原点?其次,“渲染灯光”是什么意思?你是指你的多边形是如何着色的,还是你想渲染一个看起来像光源的对象? (很抱歉最初在发布评论时混淆了,我没有写就错误地保存了它:)
-
对不起。我试图避免这种情况。请告诉我我能澄清什么。
-
@jcage 如果您还有任何问题,请告诉我。我正在尝试正确地表达所有内容。我有绝对坐标的级别数据,即(2.5、1.2、10.2)处的三角形,我需要渲染的对象只有它们的网格坐标,然后是它们需要去的位置。如何在正确的位置渲染这些对象?类似于加载对象然后将它们翻译到它们的特定位置的东西?我真的不确定。希望这能解决我的问题。
-
嗯,我会做的方式是转换对象的坐标,通过向每个对象添加该对象的所需位置。不需要通过模型视图矩阵进行翻译,只需执行简单的向量添加并像渲染关卡对象一样渲染它们。