@YaroslavTkach

Как повернуть текстуру на какой то определенный градус, не вращая при этом полигон, на который наложена текстура?

Как повернуть текстуру на какой то определенный градус, не вращая при этом полигон, на который наложена текстура? Пользоваться графическими редакторами нельзя.

glBegin(GL_QUADS);
		glNormal3f(0.0f, 1.0f, 0.0f);
		glTexCoord2f(0.001f * (sin(PI*60.0f/180.0f)), 1.0f *  cos(PI*60.0f/180.0f));
		glVertex3f(-2.0f, 1.0f, -2.5f);
		glNormal3f(0.0f, 1.0f, 0.0f);
		glTexCoord2f(1.0f  * (sin(PI*60.0f/180.0f)), 1.0f *  cos(PI*60.0f/180.0f)); glVertex3f(2.0f, 1.0f, -2.5f);
		glNormal3f(0.0f, 1.0f, 0.0f);
		glTexCoord2f(1.0f  * (sin(PI*60.0f/180.0f)), 0.001f *  cos(PI*60.0f/180.0f)); glVertex3f(2.0f, 1.0f, 2.5f);
		glNormal3f(0.0f, 1.0f, 0.0f);
		glTexCoord2f(0.001f * (sin(PI*60.0f/180.0f)), 0.001f *  cos(PI*60.0f/180.0f)); glVertex3f(-2.0, 1.0f, 2.5f);
	glEnd();
}


Есть идеи по поводу этой команды glTexCoord2f(0.001f * (sin(PI*60.0f/180.0f)), 1.0f * cos(PI*60.0f/180.0f));
но результаты не соответствуют желаемому. Исправьте, пожалуйста, или предложите альтернативу.
  • Вопрос задан
  • 6234 просмотра
Пригласить эксперта
Ответы на вопрос 3
Kerman
@Kerman
Вообще-то никак.
Но если очень хочется:
1. Нужно сделать текстуру, которая больше полигона при любом угле поворота. Потом вращать координаты текстур относительно центра.
2. Если текстура сделана "в край" полигона и при вращении она "зациклена", то тут поможет только рендер в текстуры
Ответ написан
Комментировать
@YaroslavTkach Автор вопроса
Kerman, вообще можно повернуть изменив координаты! но тут загвоздка мне нужно на определенный угол а не от фонаря!
Ответ написан
Kerman
@Kerman
Вынесу, пожалуй, наилучшее решение отдельным ответом:
//Переключаемся в режим матрицы текстур
glMatrixMode(GL_TEXTURE);
//Получаем матрицу по умолчанию
glLoadIdentity();
//Смещаемся в центр, вокруг которого будет вращение
glTranslatef(0.5,0.5,0.0);
//вращаем
glRotatef(angle,0.0,0.0,1.0);
//возвращаем центр на место
glTranslatef(-0.5,-0.5,0.0);
//возвращаем режим матрицы назад
glMatrixMode(GL_MODELVIEW);

После этого можно рисовать квадратик. После рисования квадратика надо сбросить матрицу текстур, чтобы остальные текстуры не поворачивались:
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы