我有一个只有简单三角形的场景,并且正在使用透视投影。我已经使用GLM设置好了我的MVP矩阵,就像这样:
glm::mat4 Projection = glm::perspective(45.0f, 4.0f / 3.0f, 0.1f, 100.0f);
glm::mat4 View = glm::lookAt(
glm::vec3(0,0,5), // Camera is at (0,0,5), in World Space
glm::vec3(0,0,0), // and looks at the origin
glm::vec3(0,1,0) // Head is up (set to 0,-1,0 to look upside-down)
);
glm::mat4 Model = glm::mat4(1.0f);
glm::mat4 MVP = Projection * View * Model;
它的运行很正常,我可以更改相机的值,三角形仍能正确显示。
但我想使用正交投影。当我将投影矩阵更改为正交投影时,它表现得不可预测,我无法显示三角形,或者只能在屏幕角落看到一小部分。要使用正交投影,我这样做:
glm::mat4 Projection = glm::ortho( 0.0f, 800.0f, 600.0f, 0.0f,-5.0f, 5.0f);
虽然我没有更改视图和模型矩阵,但是它仍然无法正常工作。
我需要在正确的方向上进行调整,我是否做错了什么?我缺少什么,应该如何正确设置正交投影?
PS 我不知道是否需要,但这是三角形的坐标:
static const GLfloat g_triangle[] = {
-1.0f, 0.0f, 0.0f,
1.0f, 0.0f, 0.0f,
0.0f, 2.0f, 0.0f,
};