埃及客户亲临GENMA太仓制造基地进行RTG发运前检验,6台设备即将启运太强大了
顶住特朗普5次施压后,美联储终于要“投降”了
收评:创业板指涨1.24% 半导体、光刻机概念大涨
美股财报哪里看?国内投资者必备!美股财报查询攻略是真的?
创业板人工智能尾盘涨幅扩大!159363涨超3%刷新历史新高!AI应用强赋能,算力硬件高成长可期专家已经证实
黄金周二交易提醒:美国CPI势必点燃行情科技水平又一个里程碑
挪威1.9万亿美元主权财富基金上半年回报率5.7%实垂了
美钢宾州 Clairton 焦化厂爆炸致 2 死 10 伤,此前日本制铁计划投资 20 亿美元这么做真的好么?
链上京津冀丨③ 生物医药产业链:研产联动 共建一批园太强大了
前北约秘书长:英国公众没有意识到增加国防开支的必要性
App Store上的“AI战役”开启? 马斯克怒斥苹果偏袒OpenAI,xAI预告反垄断诉讼
就在今晚!美国劳工统计局“换帅”后的首份CPI报告要来了后续会怎么发展
邦达亚洲:澳洲联储如期降息25个基点 澳元小幅下滑后续反转来了
投资1.43亿,潍坊中农联合拟建1880吨新型绿色农药原药、农药中间体项目太强大了
日经 225 盘中创历史新高:关税忧虑降温与 AI 基建需求共振,软银领涨专家已经证实
分析师:西班牙是少数愿意惹恼特朗普的欧洲国家之一官方处理结果
数字货币板块异动拉升,恒宝股份触及涨停后续会怎么发展
泰尔重工与研视科技达成战略合作实测是真的
玖富披露与人保财险23亿保证保险纠纷最新进展反转来了
玖富披露与人保财险23亿保证保险纠纷最新进展
广和通调降2023年限制性股票激励计划股票回购价至10.4元/股最新进展
外卖“暗战”停不下来:美团线下扶持堂食,淘宝线上冲单量官方通报来了
AIWB港股IPO:单业务占99% 2025年前五月转亏损 纯美国业务零龙国关联 港股上市适配性存疑
神马电力:上半年净利润1.6亿元 同比增长13.6%这么做真的好么?
宏创控股:截至2025年8月8日股东人数为19335户后续反转来了
华锦股份上半年亏损同比扩大至9.89亿元 营收同比下降5%
AIWB港股IPO:单业务占99% 2025年前五月转亏损 纯美国业务零龙国关联 港股上市适配性存疑
中宏人寿深圳分公司财务造假,监管处罚折射保险行业隐忧反转来了
广东建科龙虎榜:3家机构进卖出前5 净卖出共2120万元后续会怎么发展
玖富披露与人保财险23亿保证保险纠纷最新进展官方通报来了
重庆银行冲刺万亿规模,大股东套现超5亿元记者时时跟进
金价,大跌!
借款人申请个人消费贷款财政贴息需要哪些操作? 财政部回应是真的吗?
250%溢价并购后股价跌停,卤味第一股回应
陕西金叶拟回购4000万元至7000万元股份 并获得不超6300万元贷款承诺
深圳燃气完成发行15亿元科技创新债券 票面利率1.52%秒懂
广东建科龙虎榜:3家机构进卖出前5 净卖出共2120万元是真的吗?
一则大消息,复星国际猛拉
国盾量子:拟与中电信量子集团签订7654.18万元销售合同 向其销售量子密钥分发软硬件设备是真的?
中关村:股东国美电器有限公司累计被冻结股份5000万股是真的吗?
中关村:股东国美电器有限公司累计被冻结股份5000万股
对近200亿元财务造假、欺诈发行竟没有察觉甚至“打保票” 国新证券是否勤勉尽责待考
【转载】态势稳,优势多,走势向好——看龙国经济之“势”
企业计划依据新法案发行稳定币,但专家称仍存障碍官方处理结果
甘源食品:上半年归母净利润7460.5万元,同比下降55.20%最新进展
【持仓分析】海通期货欧线集运净多头持仓连续第3日增加!
对近200亿元财务造假、欺诈发行竟没有察觉甚至“打保票” 国新证券是否勤勉尽责待考秒懂
特朗普称希望龙国能将大豆订单增加三倍,外交部回应
对近200亿元财务造假、欺诈发行竟没有察觉甚至“打保票” 国新证券是否勤勉尽责待考官方通报来了
明星基金经理狠起来,居然连自家人都坑太强大了
一、问题
Unity引擎里对渲染后期处理效果很多,如Bloom、运动模糊、景深等效果。实现过程是在作用的摄像机上加脚本并实现OnRenderImage方法,Graphics.Blit(source, destination, material);使用材质material的shader处理帧缓存的数据,再拷贝回屏幕帧缓存。
使用ImageEffect之后,发现在某些机型上(华为mate7、三星N7100),运行效率极低,明显卡顿。UnityProfiler查看真机渲染情况

二、调查分析
Unity文档并没有相关的详细介绍,实现的细节也不得而知。论坛里Camera.AAResolve解释为与抗锯齿有关系,关闭全屏抗锯齿之后测试,确实不会卡顿了。

目前主流移动GPU由三家公司生产,英国Imagination公司的SGX系列,美国高通公司的Adreno系列,以及著名显卡芯片商美国NVIDIA公司的移动GeForce系列。Arm的mali作为非主流,但在市场上有不小的份额,华为Mate7、三星N7100的GPU正是mali系列。
使用Mali Graphics Debugger查看渲染如图:

在前2个drawcall里都调用了glReadPixels接口

在glReadPixels的最后个参数不为空,则表示数据从显存传输到系统内存,从CPU到GPU的逆向传输,这是非常缓慢的过程,并且是阻塞模式。
看看其它机型渲染情况,下面是高通的gpu,使用adrenoprofiler查看。

它并没有调用glReadPixels,而是使用了glBindFramebuffer。FBO(Frame buffer object)在使用前需要绑定,voidglBindFramebuffer(GLenumtarget,GLuintid);第一个参数是指定绑定操作,读、写或可读可写。第二个参数指定绑定的对象,如果是0,则是默认的帧缓存对象。
这是使用了改变渲染目标缓存的方法。
由此可知不同硬件上处理的方式不一样,具体是因为Unity内部实现的原因或是硬件支持不够。查看opengl版本的版本历史和发展

最大变化的版本是OPENGL3.0。其中正式把帧缓冲对象(framebufferobject)划入core profile;帧缓冲对象之间可以互相拷贝像素到持有的不同的render target,是性能上的提升。
在FBO中使用多重采样抗锯齿,在3.0版本才加入的特性,若渲染接口不支持,则用了比较低级的API来完成获取屏幕缓存数据,导致了卡顿。
我们项目使用的是OPENGL2.0,而mali系列并没有很好的支持OPENGL2.0的接口。
用OPENGL3.0导出apk运行在华为mate7(mali系列)上,是没问题的。


同样使用了改变渲染目标缓存的方法,因为3.0版本的FBO支持多采样。
三、问题结论
OPENGL2.0,ImageEffect屏幕后期处理时,改变渲染目标缓存,绑定FBO,若不在ProjectSettings里设置全屏抗锯齿是没问题的。若设置了全屏抗锯齿,不同硬件对不同版本OPENGL的支持不定。
四、解决方案
1、关闭抗锯齿。
2、提升OPENGL版本到3.0。
3、不使用unity的OnRenderImage方法,直接使用渲染到纹理的方法。
第一种方案效果有损失,不可取;第二种可行,但版本的提升可能会有些不可预估的问题,3.0版本也弃用了很多的特性;第三种最可行,渲染到纹理的方法在绝多数机型都支持。实现方法如下:
1、摄像机上挂接一个脚本
2、Start方法,temp =RenderTexture.GetTemporary获取渲染纹理
3、Update方法,设置Camera.targetTexture= temp;
4、OnPostRender方法,设置Camera.targetTexture=null;Graphics.Blit(temp, null, material);
运行结果:


