Имитация полигонов Stipple с OpenGL ES на iOS - PullRequest
2 голосов
/ 09 октября 2011

Я хочу заполнить вогнутый многоугольник простым повторяющимся узором.Я уже могу правильно нарисовать многоугольник, но, к сожалению, у меня проблемы с его заполнением.В OpenGL я мог бы легко это сделать с помощью POLYGON_STIPPLE.Однако эта функциональность недоступна в OpenGL ES.

Я подумал, что мне, вероятно, нужно использовать текстуры вместо рисования.Однако я не могу понять, как вычислить правильные координаты текстуры, так как все треугольники имеют совершенно разные размеры, но я все еще хочу, чтобы рисунок хорошо совпал рядом друг с другом.объясните, как заполнить многоугольники повторяющейся текстурой, где многоугольник немного сложнее, чем один треугольник или прямоугольник?

1 Ответ

2 голосов
/ 01 ноября 2011

Расчет координат текстуры не так сложен, как я думал.Заполнить многоугольник узором можно следующим образом:

  1. Загрузить текстуру (из изображения или определить байтовый массив)
  2. Связать текстуру
  3. Установить текстурупараметр, так что текстура повторяется.Это приведет к тому, что для каждой координаты больше 1 текстура будет повторяться снова и снова.

    glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
    glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );
    
  4. Рассчитать координаты текстуры.Каждая координата вершины c соответствует текстурной координате, рассчитанной следующим образом: (cx / texture.width, cy / texture.height)

...