Поворот объекта OpenGL ES 2.0

Мы используем следующий код для построения BMP-изображения в OpenGL ES 2.0: (x1,y1 - нижние левые координаты, а x2,y2 - верхние правые координаты объектов на экране, данные tempimage - указатель на сохраненную информацию об изображении bmp)

struct
{
  GLuint uiId;
  GLuint uiLowerLeftLoc;
  GLuint uiScaleMatrixLoc;
  GLuint auiLoc[eNumUniforms];
}
m_ShaderProgram;

glUniform2f(m_ShaderProgram.uiLowerLeftLoc, x1, y1);
float afMatrix[4] = { x2 - x1, 0, 0, y2 - y1 };
glUniformMatrix2fv(m_ShaderProgram.uiScaleMatrixLoc, 1, GL_FALSE, afMatrix);
glBindTexture(GL_TEXTURE_2D, m_uiTexForeground);
glTexImage2D(GL_TEXTURE_2D, 0,GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, tempimagedata);
glBindBuffer(GL_ARRAY_BUFFER, m_uiVbo);
glEnableVertexAttribArray(VERTEX_ARRAY);
glVertexAttribPointer(VERTEX_ARRAY, 2, GL_FLOAT, GL_FALSE, 0, 0);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glDisableVertexAttribArray(VERTEX_ARRAY);

Я хочу повернуть объект с точки зрения углов. Как этого можно достичь?

1 ответ

Перед рендерингом вашей сетки вы должны отправить матрицу поворота / трансфомации используемому шейдеру. Внутри вашего вершинного шейдера умножьте координаты на матрицу.

Этот сайт хорош для понимания основ рендеринга с помощью матриц (он использует C++ и GLM): http://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices/

Другие вопросы по тегам