Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在opengl中在一个vbo中绘制多个元素?_Opengl_Vbo - Fatal编程技术网

如何在opengl中在一个vbo中绘制多个元素?

如何在opengl中在一个vbo中绘制多个元素?,opengl,vbo,Opengl,Vbo,假设我有M个多边形,它们有一些形状和顶点顺序。 如果我为每个多边形创建一个vbo,那么我有M个vbo。 当我想画它们时,我必须在我的cpu上实现一个M循环。由于M太大,速度太慢。 所以我只想创建一个vbo来存储所有多边形的顶点。 但是,当我想使用GL_多边形绘制vbo时,opengl会将此vbo中的所有顶点视为一个多边形中的顶点。 因此,输出是多个多边形联合,这不例外。 所以我的问题是如何在一个vbo中分离多个多边形顶点。 我知道,如果我把每个多边形看作多重三角形,并将相应的顶点索引存储在ebo

假设我有M个多边形,它们有一些形状和顶点顺序。
如果我为每个多边形创建一个vbo,那么我有M个vbo。
当我想画它们时,我必须在我的cpu上实现一个M循环。由于M太大,速度太慢。
所以我只想创建一个vbo来存储所有多边形的顶点。 但是,当我想使用GL_多边形绘制vbo时,opengl会将此vbo中的所有顶点视为一个多边形中的顶点。
因此,输出是多个多边形联合,这不例外。
所以我的问题是如何在一个vbo中分离多个多边形顶点。
我知道,如果我把每个多边形看作多重三角形,并将相应的顶点索引存储在ebo中,这就是工作。 但是这种方法可能不适用于多条直线,而且三角测量需要花费时间。

但我认为应该有一个更合适的方法

将所有顶点存储在单个vbo中(如您在问题中所述)


然后,您可以使用
glMultiDrawArrays
(and)一次绘制所有网格数据。

我不完全理解,您希望:a)将所有网格数据放在一个缓冲区中(可能和最佳做法)?b) 使用单个绘制调用绘制所有网格(位于单个缓冲区中),避免在其上循环?是的,我同时需要a和b。您可能需要签出