тесселяция полигонов в шейдере opengl - PullRequest
2 голосов
/ 13 января 2010

Я хочу, чтобы 20k + 2D многоугольников отображались в opengl с контуром и заливкой.

Некоторые многоугольники вогнуты.

Возможно ли это сделать с помощью шейдеров?

1 Ответ

2 голосов
/ 13 января 2010

Для этого вам не нужны шейдеры:

glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); //Fill
glDrawElements(...);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); //Outline
glDrawElements(...);

Если полигоны вогнутые, вам придется их тесселяции, либо вручную, либо с помощью служебной библиотеки gl, glu. Посмотрите на gluNewTess. Если вы решите выполнить тесселяцию полигонов самостоятельно, вам нужно будет не забыть установить правильные флажки ребер, чтобы внутренние ребра тесселяции не отображались, см. glEdgeFlagPointer.

РЕДАКТИРОВАТЬ: Я нашел следующую ссылку о том, как использовать буфер трафарета для рендеринга вогнутых полигонов.

...