glGenVertexArrays
和n
等函数的{{1}}参数允许生成多个索引名称。
我的问题是:一次生成多个索引名称与一次生成1个名称有什么好处?有吗?
背景:我正在构建一个面向对象的框架,但我不知道是否应该为 index name wizardry添加功能(以更复杂的接口为代价)或者只需根据需要自动生成单个索引名称。
答案 0 :(得分:4)
在实践中它没有任何区别。如果你看一下处理着色器的API部分,你会发现,它确实一次只返回一个索引。事实上,许多经验丰富的OpenGL编码器更喜欢将{glgen ...函数包装在myglCreate…
函数中,这些函数只返回所需对象类的一个名称。
答案 1 :(得分:1)
我完全同意@ datenwolf的建议,但想提供更多推理。如果它是最方便的事情,我只会给glGen*()
打电话给多个名字。如果您已经拥有一系列名称,并希望一次创建所有名称,那么请继续使用单个调用。但它绝对不值得跳过任何环节,我无法想象一个有助于提高性能的现实场景。
glGen*()
次调用仅创建对象名称(这是官方的OpenGL术语,即使很多人称之为" ids"),而不是对象。仅在第一次绑定名称时才创建实际对象。因此,一次创建多个对象无法获得收益,唯一(微不足道的)收益来自同时生成多个名称。
我可以想到两个相关的原因,为什么生成名称不仅仅是海洋中的一滴: