2015-02-28 3 views
0

Я пытаюсь использовать OpenGL в своем приложении и поэтому копирую код this в свой проект. Он отлично работает, но я хочу рисовать поклонников треугольника, а не просто рисовать этот треугольник. Как мне изменить код, чтобы я мог это сделать?Android OpenGl ES Triangle Fan

ответ

0

Нет никакой магии в использовании вентиляторов треугольника. Вы просто изменяете примитивный тип, который передается в качестве первого аргумента для обратных вызовов на GL_TRIANGLE_FAN. Например, если ваш код учебник в настоящее время имеет этот вызов:

GLES20.glDrawElements(GLES20.GL_TRIANGLES, indices.length, 
     GLES20.GL_UNSIGNED_SHORT, drawListBuffer); 

Вы можете изменить его на это вместо:

GLES20.glDrawElements(GLES20.GL_TRIANGLE_FAN, indices.length, 
     GLES20.GL_UNSIGNED_SHORT, drawListBuffer); 

Теперь вы просто добавить больше вершин и индексов, и вы готовы пойти город.

Путь OpenGL определяет треугольные вентиляторы, первая точка разделяется всеми треугольниками. Если вы задаете вершины:

v0 v1 v2 v3 v4 v5 v6 ... 

сгенерированных треугольники:

v0 v1 v2 
v0 v2 v3 
v0 v3 v4 
v0 v4 v5 
v0 v5 v6 
... 

Связанных примитивный типа являются треугольными полосками (GL_TRIANGLE_STRIP), которые чаще всего используются, чем любители треугольника.

-1

Вентилятор треугольника не существует непосредственно в opengl. Если вы хотите создать поклонников треугольника, вам нужно рисовать, используя треугольники и указатели. Вот довольно хороший учебник о том, как сделать эту работу. http://www.learnopengles.com/tag/triangle-strips/

+0

ОК, спасибо. Думал, что я до сих пор не знаю, как реализовать это в своем коде. – anonymos

+0

В случае учебника, опубликованного вами, это довольно просто. Просто обновите метод setupTriangle, чтобы добавить дополнительные вершины треугольника, которые вы хотите в свой вентилятор, а затем добавьте знаки, как показано в примере, который я опубликовал. Код чертежа должен оставаться неизменным. – Ben

+2

Это совершенно неправильно. Треугольные вентиляторы поддерживаются во всех версиях OpenGL ES. –

Смежные вопросы