用GL_TRIANGLE_STRIPS替换GL_QUADS会导致图形故障

时间:2012-02-21 11:10:19

标签: opengl

我第一次尝试用gl_triangle_strips替换gl_quads并导致绝对失败: - (。

这有什么区别:

//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};

???

EDIT 显示问题的屏幕截图:

enter image description here

2 个答案:

答案 0 :(得分:3)

如果换掉第2和第3个坐标会怎么样?他们看起来左手缠绕着我。此外,屏幕截图可以很好地证实“绝对失败”。 :)

答案 1 :(得分:1)

  

所以我想问一下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)。