旋转对象OpenGL ES 2.0



我们使用以下代码在OpenGL ES 2.0中绘制BMP图像:(x1,y1为屏幕对象的左下坐标,x2,y2为屏幕对象的右上坐标,tempimage data为存储的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);

我想以角度来旋转物体。如何做到这一点?

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

这个网站很适合理解矩阵渲染的基础知识(它使用c++和GLM): http://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices/

最新更新