3

这只是出于兴趣,但是 GL_VERTEX_ARRAY 将“保持”并通过 drawArrays() 之类的东西渲染的顶点数量是否有限制?或者我理论上可以通过几百万个顶点并且仍然能够调用drawArrays()?

4

2 回答 2

3

肯定有一个限制,但据我所知,它只是基于可用内存,所以你很可能有几百万个顶点。

于 2011-06-25T02:38:50.890 回答
3

由于 OpenGL-1.2 在使用时存在某种限制glDrawRangeElements

实现表示推荐的顶点和索引数据的最大数量,可以通过 GetIntegerv使用符号常量MAX_ELEMENTS_VERTICES和 调用来查询MAX_ELEMENTS_INDICES。如果end-start+1 大于 的值MAX_ELEMENTS_VERTICES,或者如果 count 大于 的值MAX_ELEMENTS_INDICES,则调用可能会以降低的性能运行。不要求范围内的所有顶点都开始;最后被引用。但是,该实现可能会部分处理未使用的顶点,从而降低使用最佳索引集可以实现的性能。

但这更像是一个建议,一个硬约束。除此之外,真正的限制是安装的内存量,以及为索引元素数组选择的类型可以解决的问题

但是,通常的限制glDrawRangeElements通常也可以很好地指示批量大小。

于 2011-06-25T10:28:31.257 回答