gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 06:10:53 24 4
gpt4 key购买 nike

我试图实现一个正交投影矩阵——目前,我想做的就是在屏幕上绘制一个三角形,没有矩阵它也能正常工作,但是一旦用矩阵乘以坐标,三角形就不会了'不适合页面(很难解释,但一个点在中心,另外两个远离页面)。我已经用一个不同的矩阵试过了,那里有负坐标(所以屏幕的中心是原点)并且它工作正常 - 我在这里做错了什么吗?相关代码如下:

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

所以尽量让它大一点。

关于c++ - 正交投影矩阵 - 错误位置的三角形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31297949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com