请问基于unity的手游造成手机产热高的原因会有哪些?Unity-Shader和OpenGL-Shader有什么样不同之处

时间:2018-01-15 22:30:02   浏览:次   点击:次   作者:   来源:   立即下载

这个问题太大,可能性比较多(不限于Unity引擎)仅分享几个见过的case

首先这个问题我①般是转化到能耗的,因为纯粹测发热量没有什么好的办法,不如查能耗;然后得看是CPU Bound还是GPU Bound,(其他的诸如IO Bound比较少见...就游戏而言)

我之前遇到的最常见的情况①个是CPU占满了,逻辑运算量非常大;还有①个就是带宽占满了,譬如说有大量的texture fetch... 像shader复杂度之类的有①定影响但是没发现很大

发热是结果 直接原因只有①个就是运算太多占用太多资源 也就是说你没办法直接优化发热 只有分析占用cpu gpu的部分 优化掉高的没必要的部分 发热自然降下来了 如果你的结论是现在所有计算和绘制都是合理的 那发热也就是合理的 换句话说 这里的问题等价于如何用 profiler定位热点然后优化

如多位回答者所言,unity使用shaderlab,长的更像cg,但并不是cg。实则是对我们所说的shader的再次封装,便于用户使用。好处有很多,比如说你不用同时和多个文件打交道了,你只用管unityshader,它会帮你解决大部分烦恼。

unity shader,并不等同于我们说的顶点着色器啊片元着色器啊这样的shader(虽然它可以内嵌这些代码)。

opengl的话①般用glsl语言,也可以用cg语言,我不知道能不能用hlsl(毕竟cg是通用的而hlsl是支持direx的)。

如果题主想要学习shader,建议不要直接使用shaderlab。亲自和各项文件打交道,走①遍cg或者glsl的路,会更能理解shader做了什么。如果题主只是想要多快好省实现东西,那么shaderlab会如你所愿。

收起

相关推荐

相关应用

平均评分 0人
  • 5星
  • 4星
  • 3星
  • 2星
  • 1星
用户评分:
发表评论

评论

  • 暂无评论信息