我试图实现正交投影矩阵-当前,我要做的就是在屏幕上绘制一个三角形,在没有矩阵的情况下可以正常工作,但是一旦将坐标乘以矩阵,三角形就不适合页面(很难解释,但其中一个点位于中间,而另外两个点离页面很远)。我已经尝试过使用具有负坐标的其他矩阵(因此屏幕的中心是原点)并且可以正常工作-我在这里做错了什么吗?相关代码如下:
GLfloat vertices[] =
{
-1.0f, -1.0f, 0.0f, 1.0f,
1.0f, -1.0f, 0.0f, 1.0f,
0.0f, 1.0f, 0.0f, 1.0f,
};
glm::mat4 projectionMatrix = glm::ortho(0.0f, 960.0f, 640.0f, 0.0f, 1.0f, -1.0f);
glm::mat4 viewMatrix = glm::lookAt(glm::vec3(0,0,5),glm::vec3(0,0,0),glm::vec3(0,1,0));
glm::mat4 modelMatrix = glm::mat4(1.0f);
glm::mat4 PVM = projectionMatrix * viewMatrix * modelMatrix;
GLuint matrixID = glGetUniformLocation(shader.getShaderID(), "PVM");
然后是顶点着色器:
#version 130
in vec4 vertexPosition;
uniform mat4 PVM;
out vec4 position;
void main()
{
gl_Position = vertexPosition * PVM;
position = vertexPosition;
}
我刚刚加入了我认为相关的代码。
最佳答案
好吧,如果像您一样使用正交投影和屏幕分辨率。顶点坐标变为像素坐标。因此,您的三角形只有2个像素宽,其中一半位于屏幕外。
因此,请尝试使其更大一些。