Opengl 组合不同长度的线条?

Opengl 组合不同长度的线条?,opengl,opengl-3,Opengl,Opengl 3,现在,我正在创建我的OpenGL几何体对象-都是线框模型-这种方式(简化代码): 这里的CenterCrossVertexs是一条固定长度的GL_线 后来,它们是这样绘制的: glUseProgram(shaderProgram); glBindVertexArray(m_gl3ElementList[i].VAO); glDrawArrays(GL_LINE_STRIP,0,centerCrossVertices_size); 现在我想展示一些更复杂的模型,它们由几组

现在,我正在创建我的OpenGL几何体对象-都是线框模型-这种方式(简化代码):

这里的CenterCrossVertexs是一条固定长度的GL_线

后来,它们是这样绘制的:

glUseProgram(shaderProgram);
glBindVertexArray(m_gl3ElementList[i].VAO);            
glDrawArrays(GL_LINE_STRIP,0,centerCrossVertices_size);
现在我想展示一些更复杂的模型,它们由几组线条组成,但长度不同。这意味着有一个对象本身不使用一条线带,而是使用多条线带,这些线带可以包含不同数量的顶点

我的问题:我是否必须为每个线条条调用上面的序列,是否需要为每个线条条创建单独的VBO/VAO?或者,有没有一种方法可以组合多个线条带?如果是:如何做到这一点

现在我想展示一些更复杂的模型,这些模型由几组线带组成,但长度不同


如果切换到索引绘制调用(like)并使用,则可以在单个绘制调用中渲染所有条带。

注意,的第二个参数是一个索引,用于指定必须绘制的缓冲区的第一个元素,第三个参数是应绘制的元素数。所以您可以绘制数组缓冲区的子集。@rabbi76这看起来不错-谢谢!根据您链接的文档,这至少需要OpenGL 3.1,而我的限制是3.0-上面评论中@rabbi76给出的答案已经解决了我的问题。@Elmi:啊,您没有提到您的版本限制,对不起。
glUseProgram(shaderProgram);
glBindVertexArray(m_gl3ElementList[i].VAO);            
glDrawArrays(GL_LINE_STRIP,0,centerCrossVertices_size);