Есть ли способ трансформировать прямоугольник, нарисованный glDrawTex? - PullRequest
0 голосов
/ 06 февраля 2012

Как утверждает спецификация OpenGL, все преобразования игнорируются в дизайне, но есть ли простой способ нарисовать текстуру, как это делает glDrawTex, но преобразовать пиксели с помощью матрицы раньше?

1 Ответ

0 голосов
/ 06 февраля 2012

Разве вы не можете просто изменить аргументы x / y / z для функции glDrawTex, чтобы преобразовать текстуру в нужное вам положение? Но если вы хотите повернуть текстуру, просто нарисуйте текстурированный квад, используя два треугольника. Это очень просто Предполагая, что у вас OpenGL ES версии 1.1:

const float v[] = {
    0,   0,    0, 0,
    0, 128,    0, 1,
  128,   0,    1, 0,
  128, 128,    1, 1,
};

glBindTexture(GL_TEXTURE_2D, texId);
glEnable(GL_TEXTURE_2D);

glTexCoordPointer(2, GL_FLOAT, 4*4, &v[2]);
glVertexPointer(2, GL_FLOAT, 4*4, &v[0]);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnableClientState(GL_VERTEX_ARRAY);

glDrawArrays( GL_TRIANGLE_STRIP, 0, 4);

(я предполагаю, что вы рисуете с использованием ортографической проекции, а 128 - это размер текстуры)

Таким образом, положение текстуры можно изменить, используя матрицу просмотра модели. Также матрицу texure можно использовать для изменения способа нанесения текстуры на треугольники.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...