一些图形学的概念介绍,个人摘抄或整理,作为个人文章的词条引用;
Draw Call:
简单的说来,就是CPU调用图像编程接口,如OpenGL中的glDrawElements命令或者DirectX中的DrawIndexedPrimitive命令,以命令GPU进行渲染的操作;
Draw Call中造成性能的原因一般是CPU方面的原因;原因是每次调用Draw Call之前,CPU需要向GPU发送很多内容,包括数据、状态和命令等;在这一阶段,CPU需要完成很多工作,例如检查渲染状态等;而一旦CPU完成了这些准备工作,GPU就可以开始本次的渲染;GPU渲染能力很强,渲染200个或者2000个三角面通常没什么区别,如果Draw Call数量太多,CPU就会把大量时间花费在提交Draw Call上,造成CPU的过载;
要尽量减少Draw Call,可以使用批处理的思想,也就是把很多小的Draw Call合并成一个大的Draw Call;合并处理更适合那些静态的物体,如不会移动的物件等,这些静态物体只需要合并一次;也可以对动态物体进行合并,但由于其是不断运动的,所以每一帧都需要重新进行合并然后再发送给GPU,这对时间和空间都会造成一定影响;