美文网首页
关于游戏运行drawcall和cpu

关于游戏运行drawcall和cpu

作者: mcgee0731 | 来源:发表于2019-06-19 21:06 被阅读0次

理解drawcallcpu

1. CPU和GPU并行工作的原理
  • 为了CPUGPU可以并行工作,就需要一个命令缓冲区(Command Buffer)
  • 命令缓冲区包含了一个命令队列,由CPU向其中添加命令,而由GPU从中读取命令。
  • 添加和读取的过程是相互独立的,因此命令缓冲区可以使CPU和GPU相互独立工作。
  • CPU需要渲染一些对象时,它可以向命令缓冲区添加命令,而GPU完成了上一次的渲染任务后,它就可以从命令队列里取出一个命令并执行它。
  • 命令缓冲区中的命令有很多种类,而Draw Call是其中的一种,其它命令还有改变渲染状态等命令(改变使用的Shader,使用不同的纹理等)。
2. 什么是Draw Call?
  • drawcallCPU对底层图形绘制接口的调用命令 GPU执行渲染操作
  • Draw Call就是CPU调用图形编程接口,比如DirectXOpenGL,来命令GPU进行渲染的操作。
3. 为什么 Draw Call多了会影响帧率?
  • 在每次调用Draw Call之前,CPU需要向GPU发送很多内容,包括数据,状态,命令等。在这一阶段,CPU需要完成很多工作,例如检查渲染状态等
  • 而一旦CPU完成了这些准备工作,GPU就可以开始本次的渲染。GPU的渲染能力是很强的,渲染300个和3000个三角网格通常没有什么区别,因此渲染速度往往快于CPU提交命令的速度。
  • 如果Draw Call的数量太多,CPU就会把大量时间花费在提交Draw Call命令上,造成CPU的过载。
  • 因此造成Draw Call性能问题的元凶是CPU。
4. 如何减少DrawCall?
  • 提交大量很小的Draw Call会造成CPU的性能瓶颈,即CPU把时间都花费在准备Draw Call的工作上了。
  • 那么,一个很显然的优化想法就是把很多小的Draw Call合并成一个大的Draw Call,这就是批处理的思想。
drawcallCPU对底层图形绘制接口的调用命令 GPU执行渲染操作

例如 :

DirectX中的DrawIndexedPrimitive命令
OpenGL中的glDrawElement命令

相关文章

  • 关于游戏运行drawcall和cpu

    理解drawcall和cpu 1. CPU和GPU并行工作的原理 为了CPU和GPU可以并行工作,就需要一个命令缓...

  • Ugui优化

    1.DrawCall 1-1.什么是DrawCall:CPU调用命令GPU进行渲染的操作。1-2..CPU和GPU...

  • 2020-02-03 Unity一些性能优化的知识点

    1,drawcall是什么,为什么要降低drawcall 运行时,整个游戏场景需要交给GPU绘制,因为不同的GPU...

  • 游戏渲染

    DrawCall 由CPU收集美术的资源信息,传递给GPU,通知GPU进行一次渲染过程叫DrawCall Open...

  • Unity-性能优化

    CPU优化 视锥体剔除,遮挡剔除 合理安排图片和材质,使用unity批处理( 减少DrawCall)1.合并模型2...

  • 游戏后期优化

    1.1 开发中的重点问题 两个瓶颈 Cpu向Gpu发送指令,每发送一次数据,称为DrawCall(DC) Cpu从...

  • Shader笔记--DrawCall

    DrawCall我们经常会在各个地方提到。大佬给你说拼UI啊,要注意drawcall啊。发现游戏帧率不高,是不是d...

  • unity--优化CPU之DrawCall

    前言 官方链接点这里 Draw Call Batching 在屏幕上绘制一个物体,U3D引擎必须向绘图API(op...

  • 关于游戏运行shader和FPS

    理解 shader和FPS 1. 什么是shader? shader中文名叫着色器,顾名思义,它的作用可以先简单理...

  • CPU性能判断指标---上下文切换,运行队列和使用率

    关于CPU,有3个重要的概念:上下文切换(context switchs),运行队列(Run queue)和使用率...

网友评论

      本文标题:关于游戏运行drawcall和cpu

      本文链接:https://www.haomeiwen.com/subject/yxmlqctx.html