我试图实现正交投影矩阵-当前,我要做的就是在屏幕上绘制一个三角形,在没有矩阵的情况下可以正常工作,但是一旦将坐标乘以矩阵,三角形就不适合页面(很难解释,但其中一个点位于中间,而另外两个点离页面很远)。我已经尝试过使用具有负坐标的其他矩阵(因此屏幕的中心是原点)并且可以正常工作-我在这里做错了什么吗?相关代码如下:

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个像素宽,其中一半位于屏幕外。

因此,请尝试使其更大一些。

10-08 09:39
查看更多