Mali GPU OpenGL ES 应用性能优化--基本方法

               

1. 常用优化工具



2. 常用优化方案

     OpenGL ES优化的主要工作是在图形管道中找到影响性能的bottleneck,其bottleneck一般表现在以下几方面:

     • 在应用程序代码中,如冲突检测
     • GPU与主内存间的数据传输
     • 在VP(Vertex Processor)中的顶点处理
     • 在FP(Fragment Processor)中的片断处理

     可通过DS-5 Streamline来定位性能瓶颈(Locate bottleneck)。为了获取更好的性能,可从以下具体功能着手优化:

2.1 纹理(Texture)

     高分辨率的纹理占用大量的内存,它是Mali GPU上的主要负荷,可从以下几方面进行优化:
     • 除非必要,尽量不要使用大纹理
     • 总是打开纹理映射(mipmapping),有时可能降低了渲染质量
     • 如果可能,排序三角形,当按render的次序render时,使其有相互覆盖的三角形放在一起
     • 压缩纹理,可减少内存占用、传输带宽,Mali-400 MP GPU支持ETC纹理压缩(每个像素占4bits,且不支持alpha通道),GPU硬件可解压ETC纹理,缺点是将降低图像质量

2.2 抗锯齿(Anti-aliasing)

     • GPU支持4x Full Scene Anti-Aliasing (FSAA),其性能损失微不足道;当创建context和rendering surface时,可通过选择EGL配置(EGL_SAMPLES=4)来激活4x FSAA
     • Mali GPU还支持16x FSAA,其性能将下降到4x FSAA的1/4

2.3 画图模式(Draw Mode)

    对于大的网格,一个顶点被包含在多个三角形中,这样的顶点被处理的次数依赖调用的画图函数:

     • glDrawElements:每个顶点仅被处理一次,效率更高。
     • glDrawArrays:每个顶点数据在每一个使用它的三角形中被传输和处理一次

     按使用的次序存储顶点数据,可以改善顶点Cache效果,并且减少了从RAM到顶点Cache传输的数据量。

2.4 顶点缓冲对象(Vertex Buffer Objects)

     • 使用顶点数组(Vertex Array)存储的顶点数据位于客户端内存(即主内存),当调用glDrawArrays或glDrawElements时,将把这些顶点数据从客户端内存copy到图形内存。

     • Vertex Buffer Objects允许Ope

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值