Мы используем следующий код для построения BMP-изображения в OpenGL ES 2.0: (x1, y1 - нижние левые координаты, а x2, y2 - верхние правые координаты объектов на экране, tempimage данных является указателем на информацию ВМР изображения сохраняются)Rotate Object OpenGL ES 2.0
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);
Я хочу, чтобы повернуть объект с точки зрения углов. Как это можно достичь?
Я новичок в OpenGL. Согласно пониманию, используемая матрица MVP предназначена для 3D-вращения (пожалуйста, исправьте меня, если я ошибаюсь), что на данный момент довольно сложно. Есть ли какой-либо метод только двумерного вращения объектов? В настоящее время мы рисуем изображение PNG/JPEG/BMP, а также пользовательские поля в 2D плоскости. Это то, что мы хотим повернуть. мы вычисляем координаты вершин для этих объектов, (4 заданных координаты для поля, 2 для BMP/JPEG/PNG). Мы попытались вычислить координаты и попытались построить с новой ориентацией, но применение шейдера не получилось должным образом. Вы можете помочь в этом? –
Для вращения матрица - это путь. Система MVP должна использоваться даже для 2D. Хотя вы могли бы сузить трансляцию и масштабировать до x и y, а для вращения просто реализовать матрицу z-вращения. – SporreKing
Важно помнить, что когда вращение применяется к сетке, которую вы выполняете, она будет вращаться вокруг локального источника. Вот почему перевод должен применяться в шейдере и почему вы не можете изменить внешние координаты вершин. В противном случае происхождение будет смещено от сетки, и оно, по-видимому, будет циркулировать вокруг источника. Многие люди забывают об этом, и это может быть причиной неправильного результата. – SporreKing