我正在创建基于图块的渲染器,其中每个图块都有一个顶点模型。但是,从每个顶点模型中,只有一小部分在一帧中呈现。这些子集每帧都会改变。
最快的渲染方法是什么?我可以想到以下几个选项:
您认为哪个最快,或者您能想得更快吗?
一个决定性因素显然是,如果在较大的VBO之间切换比在较小的VBO之间切换更昂贵。
答案 0 :(得分:0)
制作大量的抽奖活动是一个坏主意。在OpenGL中,您将受到此方法的CPU限制,因此最好批量处理很多模型。
实际上,我会采用这种方法。所有静态几何都在一个且只有一个VBO和一个VAO内。这并不意味着你只有“一次抽奖”。但是,您应该使用glMultiDraw * Indirect。 这个想法已经成熟,你必须使用计算着色器在GPU上进行剔除,并使用类似GL_INDIRECT_PARAMETERS扩展的方式进行多次间接绘制调用。 Indirect Drawing
对于所有动态几何体,您可以使用持久缓冲区。
回答有关更改vao / vbo的问题。改变VAO,或者使用glBindVertexBuffer不应该带来很大的开销。
但你应该对它进行分析,它可能取决于你的驱动程序/硬件:)