正投影矩阵 - 错误位置的三角形

时间:2015-07-08 16:04:39

标签: c++ opengl matrix

我试图实现一个正交投影矩阵 - 目前,我要做的就是在屏幕上绘制一个三角形,没有矩阵就可以正常工作,但只要将坐标乘以矩阵,三角形就不会# 39; t适合页面(很难解释,但一点在中心,另外两点远离页面)。我已尝试使用不同的矩阵,其中有负坐标(因此屏幕的中心是原点)并且它工作正常 - 我在这里做了一些明显错误的事情吗?相关代码如下:

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;
}

我刚才包含了我认为相关的代码。

1 个答案:

答案 0 :(得分:1)

好吧,如果您使用具有屏幕分辨率的正投影投影,就像您可能做的那样。顶点坐标变为像素坐标。所以你的三角形只有2像素宽,一半是屏幕外的。

所以尽量让它变得更大。