opengl单色和多色性能问题
我正在使用glBindBuffer绘制一个包含600万个元素(四元和三元)的巨大模型。如果我为所有组件(组件,是一组元素)提供单一颜色,则与具有不同颜色的组件相比,模型旋转更快。我可以知道原因吗。我可以从我这边改进性能吗。谢谢您的回复 我会写伪代码opengl单色和多色性能问题,opengl,Opengl,我正在使用glBindBuffer绘制一个包含600万个元素(四元和三元)的巨大模型。如果我为所有组件(组件,是一组元素)提供单一颜色,则与具有不同颜色的组件相比,模型旋转更快。我可以知道原因吗。我可以从我这边改进性能吗。谢谢您的回复 我会写伪代码 for(i=0; i < iSize ; ++i ) { glColorfv(componet[i].rgba); glDrawElements(GL_QUADS,......);// THis is working fine. } fo
for(i=0; i < iSize ; ++i )
{
glColorfv(componet[i].rgba);
glDrawElements(GL_QUADS,......);// THis is working fine.
}
for(i=0;i
但我发现(感觉)如果componet[I].rgba对于所有I值都相同,那么与所有组件都具有不同颜色的情况相比,模型旋转(处理/缩放等)更快
也许我会这样发布。很抱歉。计算机图形学中有一个术语“批处理”。简而言之,批次是状态+抽取;如果发生多个绘图,但状态不变,则该绘图将包含在同一批中。但是,更改状态会中断批处理并准备新的批处理。这是CPU密集型任务;您应该使用尽可能少的批处理,否则将达到CPU限制 每帧600万批并不是很低的数字。如果对象很小(几个元素,有时甚至几百个元素),可以将它们合并到一个顶点数组中,并添加包含颜色的额外顶点属性(如果使用固定管道-使用
glColorPointer
)
如果对象很大,而且颜色开销太大,您可以使用实例化,但它需要足够现代的图形卡(但如果没有下降GPU,渲染600万个对象的速度会很慢)。添加代码示例
glBindBuffer
不是绘图命令,您不能使用它绘图。您可以(也应该)编辑问题以添加信息,而不是放置一个实际上没有回答问题的答案。