Я пытаюсь настроить матрицу ортогонального вида с помощью 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]);
Я могу видеть, как четырехугольник визуализируется с применением перемещения и поворота, но когда вершины находятся где-нибудь, кроме -1,0f на оси z, они не отображаются, когда я ожидаю, что он вытянет что-нибудь от -1,0 до -1000,0 единиц, как указано в вызов glm :: ortho. Кто-нибудь знает, как этого можно достичь?
Задача ещё не решена.
Других решений пока нет …