我正在尝试使用 glm 设置正交视图矩阵并将其传递给 glsl。这张海报也有同样的问题,我希望能够渲染距离相机更远的像素,但是当它们不是 1.0 距离时它们会被剪裁。
MVP 矩阵的设置如下:
// Setup MVP Matrix
glm::mat4 model = glm::mat4(1.0);
model = glm::translate(model, glm::vec3(sprite->getPositionX(), sprite->getPositionY(), 0.0f));
model = glm::rotate(model, rotation, glm::vec3(0.0f, 0.0f, 1.0f));
model = glm::translate(model, glm::vec3(-sprite->getOffsetX(), -sprite->getOffsetY(), 0.0f));
//model = glm::scale(model, glm::vec3(1.0f, 1.0f, 1.0f)); // Unused for now
glm::mat4 view = glm::lookAt(glm::vec3(0,0,0), glm::vec3(0,0,-1), glm::vec3(0,1,0));
glm::mat4 projection = glm::ortho(0.0f, 800.0f, 600.0f, 0.0f, 1.0f, 1000.0f);
glm::mat4 mvp = projection * view * model;
// Set mpv matrix in shader
GLint mvpLoc = glGetUniformLocation(this->m_shader, "u_mvpMatrix");
glProgramUniformMatrix4fv(this->m_shader, mvpLoc, 1, GL_FALSE, &mvp[0][0]);
我可以看到应用了平移和旋转的四边形被渲染,但是当顶点在 z 轴上除 -1.0f 之外的任何地方时,当我希望它绘制从 -1.0 到 -1000.0 单位的任何东西时,它们不会被绘制,如调用 glm::ortho。有人知道如何实现吗?