我试图实现一个正交投影矩阵 - 目前,我要做的就是在屏幕上绘制一个三角形,没有矩阵就可以正常工作,但只要将坐标乘以矩阵,三角形就不会# 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;
}
我刚才包含了我认为相关的代码。
答案 0 :(得分:1)
好吧,如果您使用具有屏幕分辨率的正投影投影,就像您可能做的那样。顶点坐标变为像素坐标。所以你的三角形只有2像素宽,一半是屏幕外的。
所以尽量让它变得更大。