#iphone #ios #opengl-es #texture-mapping
#iPhone #iOS #opengl-es #отображение текстур
Вопрос:
Я хочу заполнить вогнутый многоугольник простым повторяющимся рисунком. Я уже могу правильно нарисовать полигон, к сожалению, у меня возникают проблемы с его заполнением. В OpenGL я мог бы легко сделать это с помощью POLYGON_STIPPLE. Однако эта функциональность недоступна в OpenGL ES.
Я подумал, что мне, вероятно, нужно использовать текстуры вместо разметки. Однако я не могу понять, как вычислить правильные координаты текстуры, поскольку все треугольники имеют совершенно разные размеры, но я все равно хочу, чтобы шаблон хорошо подходил друг к другу.
Есть ли какие-либо хорошие отправные точки, объясняющие, как заполнять многоугольники повторяющейся текстурой, где многоугольник немного сложнее, чем один треугольник или прямоугольник?
Ответ №1:
Вычисление координат текстуры не так сложно, как я думал. Заполнение многоугольника шаблоном может быть выполнено следующим образом:
- Загрузите текстуру (из изображения или определите массив байтов)
- Привязать текстуру
-
Установите параметр текстуры так, чтобы текстура повторялась. Это приведет к тому, что для каждой координаты больше 1 текстура будет просто повторяться снова и снова.
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );
-
Вычисление координат текстуры. Каждая вертикальная координата c соответствует координате текстуры, вычисляемой следующим образом: (c.x / texture.width, c.y / texture.высота)