Анимация текстуры по поверхности в OpenGL - PullRequest
2 голосов
/ 24 мая 2009

Я работаю с реализацией iPhone OpenGLES и хочу бесконечно прокручивать текстуру по простой поверхности (два треугольника образуют прямоугольник). Это должно быть просто, но это не то, что я делал раньше, и я должен что-то упустить. Я могу вращать текстуру нормально, но перевод не работает вообще. У меня есть небольшая проблема с реализацией или я делаю что-то в корне неправильно?

 // move texture
 glMatrixMode(GL_TEXTURE);
 glPushMatrix();
 glLoadIdentity();

    // increment offset - no reset for demo purposes
 wallOffset += 1.0;

    // move the texture - this does not work
 glTranslatef(wallOffset,wallOffset,0.0);

    // rotate the texture - this does work
 //glRotatef(wallOffset, 1.0, 0.0, 0.0);

 glMatrixMode(GL_MODELVIEW);

 glBindTexture(GL_TEXTURE_2D, WallTexture.name);
 glTexCoordPointer(2, GL_FLOAT, 0, coordinates);

 // simple drawing code
 glNormalPointer(GL_FLOAT, 0, normals);
 glVertexPointer(3, GL_FLOAT, 0, vertices);
 glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

    // push matrix back
 glMatrixMode(GL_TEXTURE);
 glPopMatrix();
 glMatrixMode(GL_MODELVIEW);

1 Ответ

8 голосов
/ 24 мая 2009

Вы увеличиваете смещение текстуры на 1.0f; но координаты текстур рассматриваются в диапазоне [0, 1], поэтому вы фактически не меняете координаты текстур (при условии, что вы включили какое-то обтекание).

Попробуйте изменить это значение (попробуйте .01f, или, может быть, что-то в зависимости от частоты кадров) и посмотрите, работает ли оно. Если нет, то это может быть связано с включенными вами параметрами текстуры.

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