郑伟强dev头像
第344篇 OpenGL ES 与渲染进阶封面图

第344篇 OpenGL ES 与渲染进阶

承接上一篇《MediaCodec 与硬编解码》,上一篇讲「编解码这一环」,这一篇讲「渲染这一环」。渲染是 Android 上最频繁的 GPU 工作,也是卡顿、掉帧、花屏三类问题的常见来源;而它与音视频的衔接点正是 343 篇里提到的 MediaCodec 输入 Surface。

结论先行:渲染问题的定位原则是「先看是 GPU 侧还是 CPU 侧」。 一帧的耗时由「CPU 侧准备 + GPU 侧执行」两段构成,Systrace 里 GPU 段的完成时间与帧间隔的关系,能直接判断瓶颈在哪一侧。 只看总帧时间而不做拆分,是渲染排查最常见的低效做法。

一、EGL 环境:从 Context 到可渲染的 Surface

1.1 EGL 四步初始化

class EglCore {
    private var display = EGL14.EGL_NO_DISPLAY
    private var context = EGL14.EGL_NO_CONTEXT
    private var surface = EGL14.EGL_NO_SURFACE

    fun init(windowSurface: Any, configAttrs: IntArray): Boolean {
        display = EGL14.eglGetDisplay(EGL14.EGL_DEFAULT_DISPLAY)
        if (display == EGL14.EGL_NO_D

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/zwqhlzd/article/details/169736122

文章来源转载

评论

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--