Замена GL_QUADS на GL_TRIANGLE_STRIPS приводит к графическим сбоям - PullRequest
1 голос
/ 21 февраля 2012

Я только что сделал мою первую попытку заменить gl_quads на gl_triangle_strips и привел к абсолютной ошибке: - (.

В чем разница между:

//STRIPS (not working)
float v[] = {x,y,x,y+h,x+w,y,x+w,y+h};
float u[] = {0,0,0,1,1,0,1,1};

//STRIPS METHOD #2 as recommended (not 100% correct)
float v[] = {x,y,x+w,y,x,y+h,x+w,y+h};
float u[] = {0,0,1,0,0,1,1,1};

По сравнению с той, которая работает:

//QUADS (works)
float v[] = {x,y,x+w,y,x+w,y+h,x,y+h};
float u[] = {0,0,1,0,1,1,0,1};

???

РЕДАКТИРОВАТЬ Снимок экрана, показывающий проблему:

enter image description here

Ответы [ 2 ]

3 голосов
/ 21 февраля 2012

Что произойдет, если вы поменяете местами 2-ю и 3-ю координаты?Они выглядят для меня левосторонними.Также, «абсолютный провал» был бы неплохо подтвержден скриншотами.:)

1 голос
/ 21 февраля 2012

Поэтому я хотел бы спросить экспертов opengl, в чем разница между ними:

Разница в том, что треугольная полоса не вставляет никаких "разрывов" между примитивами.

Т.е., если GL_QUADS выдаст это:

0-2 4-6
| | | |
1-3 5-7

GL_TRIANGLE_STRIP выдаст это:

0-2-4-6
|/|/|/|
1-3-5-7

Таким образом, вы не можете нарисовать несколько разделенных квадов за один вызов glBegin / glEnd (ну,Вы могли бы вставлять ухудшенные треугольники после каждого четырехугольника, но это не очень хорошее решение, imo).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...