旋转对象OpenGL ES 2.0

时间:2016-09-22 12:51:54

标签: opengl-es-2.0 powervr-sgx dm814x

我们使用以下代码在OpenGL ES 2.0中绘制BMP图像: (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 个答案:

答案 0 :(得分:0)

在渲染网格之前,您应该将旋转/变换矩阵发送到您正在使用的着色器。在顶点着色器中,将坐标乘以矩阵。

此网站有助于理解使用矩阵进行渲染的基础知识(它使用C ++和GLM):http://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices/