我正在尝试在OpenGL中设置正交投影,但似乎无法找到为什么这个三角形无法正确渲染(它不可见).我使用相同代码的透视投影(当然除了我的顶点坐标和投影矩阵)并且它工作正常.我将三角形顶点构造为:
Vertex vertices[] = { Vertex(glm::vec3(0, 600, 0.0), glm::vec2(0.0, 0.0)),
Vertex(glm::vec3(300, 0, 0.0), glm::vec2(0.5, 1.0)),
Vertex(glm::vec3(800 , 600, 0.0), glm::vec2(1.0, 0.0)) };
Run Code Online (Sandbox Code Playgroud)
我的相机构造函数是:
Camera::Camera(const glm::vec3& pos, int width, int height) {
ortho = glm::ortho(0, width, height, 0, 0, 1000);
this->position = pos;
this->up = glm::vec3(0.0f, 1.0f, 0.0f);
this->forward = glm::vec3(0.0f, 0.0f, 1.0f);
}
Run Code Online (Sandbox Code Playgroud)
我称之为:
camera = Camera(glm::vec3(0, 0, 2), window->getSize().x, window->getSize().y);
Run Code Online (Sandbox Code Playgroud)
窗口是800乘600像素.我通过函数将变换上传到着色器:
void Shader::update(const Transform& transform, const Camera& camera) {
glm::mat4 model = camera.getProjection() * transform.getModel();
glUniformMatrix4fv(uniforms[TRANSFORM_U], 1, GL_FALSE, &model[0][0]); …Run Code Online (Sandbox Code Playgroud)