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);

我想根据角度旋转对象。如何做到这一点?

4

1 回答 1

0

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

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

于 2016-09-22T13:51:48.850 回答