2010-10-19 269 views

回答

1

我不确定我是否正确理解您尝试呈现的几何图形。如果它是一种将电网这里是我会怎么做:用用于给指数

8--9--a--b 
| /| /| /| 
|/ |/ |/ | 
4--5--6--7 
| /| /| /| 
|/ |/ |/ | 
0--1--2--3 

创建和填写的元件阵列缓存:

与所有的顶点创建和填充顶点缓冲区对象使您的四格:使用

{ 0,1,5,4, 1,2,6,5, 2,3,7,6, 4,5,9,8, 5,6,a,9, 6,7,b,a } 

安装一切GL *指针,使用带有GL_QUADS glDrawElements来呈现。顶点缓存将处理已经变换的顶点:第一个四边形之后的每个四边形只需要变换2个顶点。

我不认为你会得到什么,如果你三带四带它,除了在元素数组缓冲区一些内存。

如果你想剥离它,创建相应的元素阵列缓冲区,并为每一行调用glDrawElements。这可以使用Nvidia唯一的扩展名在一个通话中完成GL_NV_primitive_restart

如果不是网格,您可以尝试NvTriStrip

+0

谢谢!这是我最终做的,似乎解决了我的问题。 – blueberryfields 2010-10-19 22:05:59

+0

我想补充一点,如果你制作三条线,你不需要为每一行分别绘制调用。您可以制作退化的三角形,将这些行连接成一个可渲染的条。 – codelark 2010-10-19 22:45:36

+0

现在我试图只用GL_TRIANGLES来完成它,但它并没有完全解决。我正在使用一种算法将每个方块变成两个三角形{0,4,1,4,5,1},但是由于原因,当我达到16x16或更高的方块时,它会发生故障。 – blueberryfields 2010-10-20 19:01:29