【发布时间】:2023-04-08 04:07:01
【问题描述】:
在我的 OpenGL 应用程序中,我使用 gluLookAt() 来转换我的相机。然后我有两个不同的渲染功能;一种使用原始渲染(glBegin()/glEnd())来渲染三角形。
glBegin(GL_TRIANGLES);
glVertex3f(0.25, -0.25, 0.5);
glVertex3f(-0.25, -0.25, 0.5);
glVertex3f(0.25, 0.25, 0.5);
glEnd();
第二个渲染函数使用着色器来显示使用相同坐标的三角形,并使用函数glDrawArrays(GL_TRIANGLES, 0, 3) 调用。 shader.vert 如下图所示:
#version 430 core
void main()
{
const vec4 verts[3] = vec4[3](vec4(0.25, -0.25, 0.5, 1),
vec4(-0.25, -0.25, 0.5, 1),
vec4(0.25, 0.25, 0.5, 1));
gl_Position = verts[gl_VertexID];
}
现在这是我的问题;如果我使用三角形的原始渲染来移动相机,我会从不同的角度看到三角形,就像人们所期望的那样。当我使用着色器渲染功能时,三角形保持静止。显然,我错过了一些关于世界坐标以及它们与使用着色器渲染的对象的关系。有人能指出我正确的方向吗?
【问题讨论】: