2013-09-10 3 views
6

Мой вопрос может быть глупо, но я не нашел хороший пример использования полосы треугольника:треугольник полосы и вырожденные треугольники

http://i.stack.imgur.com/KL8jk.png

С вершины, как, что:

A: -0.5f, -0.5f, // Bottom left. 
B: -0.5f, 0.5f, // Top left. 
C: 0.5f, -0.5f, // Bottom Right. 
D: 0.5f, 0.5f // Top right. 
---------------------------------- 
B--D 
|\ | 
| \|  
A--C  

Иногда, примеры, мы можем найти эту конфигурацию:

  • A, B, C, C, B, D

или это:

  • A, B, C, D

Что такое право? Я пробовал оба, и оба работают.

Теперь я хотел бы использовать вырожденный треугольник, чтобы объединить два квадрата.

B--D F--H  
|\ | |\ |  
| \| | \|  
A--C E--G  

Вот что я получил:

ABCD + DEEF + EFGH

Но здесь, у меня есть некоторые артефакты иногда.

+0

Можете ли вы описать/скриншот артефактов, которые вы получаете в случае "ABCD + DEEF + EFGH"? Это выглядит правильно, хотя есть решения с меньшим количеством вырожденных треугольников. – umlum

ответ

4

Если вы используете отсев забой, две конфигурации не приведет к тому же результату. В случае ABCD BCD против часовой стрелки, тогда как в случае ABCCBD CBD против часовой стрелки. Правильный способ нарисовать два квадроцикла будет зависеть от того, заботитесь ли вы о ориентации. Я бы предложил ABCDDEEFGH.

3

Я лично не думаю, что писать отдельные патчи в одной полосе треугольника делает код легко написанным или понятным. Если вы не можете измерить разницу в производительности, я бы посоветовал использовать раствор А или В.

Решения A: Отправить две отдельных полосы треугольника команд рисования

drawElements(TRIANGLE_STRIP, [A, B, C, D]); 
drawElements(TRIANGLE_STRIP, [E, F, G, H]); 

Решения B: Отправить один GL_TRIANGLES команда с двумя отдельными участками

drawElements(TRIANGLES, [A, B, C, 
         C, B, D, 
         E, F, G, 
         G, F, H]); 

решение C: решение Triangle Strip вы просили

drawElements(TRIANGLE_STRIP, [A, B, C, D, 
           D, E, 
           E, F, G, H]); 

Решение C рисует треугольники

.A B C 
C B D 
.C D D - deg 
D D E - deg 
.D E E - deg 
E E F - deg 
.E F G 
G F H 
Смежные вопросы