3d手游drawcall大概是多少
答案:2 悬赏:30
解决时间 2021-02-07 21:03
- 提问者网友:话酸浅沫
- 2021-02-06 23:03
3d手游drawcall大概是多少
最佳答案
- 二级知识专家网友:厌今念往
- 2021-02-06 23:28
draw call是openGL的描绘次数(directX没怎么研究,但原理应该差不多)
一个简单的openGL的绘图次序是:设置颜色→绘图方式→顶点座标→绘制→结束。
每帧都会重复以上的步骤。这就是一次draw call
如果有两个model,那么需要
设置颜色→绘图方式→顶点座标A→绘制→结束。
设置颜色→绘图方式→顶点座标B→绘制→结束。
两次draw calls;
也就是说在openGl绘制前,如果色彩通道(color filter),绘图方式(shader),顶点座标(model)不同的情况下draw calls就会增加。
对openGl来说绘制参数(状态值)的变更要比绘制大量的顶点更耗费cpu。
所谓高速绘图就是,在尽量不改变openGl状态值的情况下,用一次draw call完成所有绘制。
比如上面的例子:
设置颜色→绘图方式→顶点座标A+顶点座标B→绘制→结束。
就要更加有效率。
个人估计unity3d的dynamic batch,static batch都是通过一定的方法使不同的object的顶点座标能够结合成一个整体,达到减少draw calls的效果。
但是有一定的要求限制,比如material要相同,mesh要相同并在300个面以内等等,这些都是为了保证openGl的状态值不改变。
Unity在 Player Setting 里的两个功能选项 Static Batching 与 Dynamic Batching。功能描述如下:
Static Batching 是将标明为 Static 的静态物件,如果在使用相同材质球的条件下,Unity 会自动帮你把这两个物件合并成一个 Batch,送往 GPU 来处理。这功能对效能上非常的有帮助,所以是需要付费才有的。
Dynamic Batching 是在物件小于300面的条件下(不论物件是否为静态或动态),在使用相同材质球下,Unity就会自动帮你合合并成一个 Batch 送往 GPU 来处理。
一个简单的openGL的绘图次序是:设置颜色→绘图方式→顶点座标→绘制→结束。
每帧都会重复以上的步骤。这就是一次draw call
如果有两个model,那么需要
设置颜色→绘图方式→顶点座标A→绘制→结束。
设置颜色→绘图方式→顶点座标B→绘制→结束。
两次draw calls;
也就是说在openGl绘制前,如果色彩通道(color filter),绘图方式(shader),顶点座标(model)不同的情况下draw calls就会增加。
对openGl来说绘制参数(状态值)的变更要比绘制大量的顶点更耗费cpu。
所谓高速绘图就是,在尽量不改变openGl状态值的情况下,用一次draw call完成所有绘制。
比如上面的例子:
设置颜色→绘图方式→顶点座标A+顶点座标B→绘制→结束。
就要更加有效率。
个人估计unity3d的dynamic batch,static batch都是通过一定的方法使不同的object的顶点座标能够结合成一个整体,达到减少draw calls的效果。
但是有一定的要求限制,比如material要相同,mesh要相同并在300个面以内等等,这些都是为了保证openGl的状态值不改变。
Unity在 Player Setting 里的两个功能选项 Static Batching 与 Dynamic Batching。功能描述如下:
Static Batching 是将标明为 Static 的静态物件,如果在使用相同材质球的条件下,Unity 会自动帮你把这两个物件合并成一个 Batch,送往 GPU 来处理。这功能对效能上非常的有帮助,所以是需要付费才有的。
Dynamic Batching 是在物件小于300面的条件下(不论物件是否为静态或动态),在使用相同材质球下,Unity就会自动帮你合合并成一个 Batch 送往 GPU 来处理。
全部回答
- 1楼网友:浪者不回头
- 2021-02-06 23:38
举个例子:如果你的目标是游戏跑30fps、使用2ghz的cpu、20š„工作量拨给draw call来使用,那你每秒可以有多少draw call呢?
333 batchs/frame = 25k * 2 * (0.2/30)
那既然 batch 是个箱子,里头装着物件的顶点资料,再依据我们上面的描述,那表示同样材质或 shader 的物件,可以合并成一个 batch 送往 gpu,这样就是最省事的方法!
unity在 player setting 里的两个功能选项 static batching 与 dynamic batching。功能描述如下:
static batching 是将标明为 static 的静态物件,如果在使用相同材质球的条件下,unity 会自动帮你把这两个物件合并成一个 batch,送往 gpu 来处理。这功能对效能上非常的有帮助,所以是需要付费才有的。
dynamic batching 是在物件小于300面的条件下(不论物件是否为静态或动态),在使用相同材质球下,unity就会自动帮你合合并成一个 batch 送往 gpu 来处理。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |