专栏首页代码GG之家SDL系列讲解(十二)创建窗口流程

SDL系列讲解(十二)创建窗口流程

SDL系列讲解(一) 简介

SDL系列讲解(二) 环境搭建

SDL系列讲解(三) 工具安装

SDL是什么,能干什么,为什么我们要学习它?

SDL系列讲解(四) demo讲解

SDL系列讲解(五) 调试c代码

SDL系列讲解(六) SDL_Activity流程

SDL系列讲解(七) SDL_image教程

SDL系列讲解(八) SDL_ttf教程

SDL系列讲解(九) 异常退出分析

SDL系列讲解(十) 按键处理流程

SDL系列讲解(十一) SDL_QUIT流程

创建窗口时序图

时序图细节

看下创建窗口的流程图,我们简单说下过程。窗口创建,会先判断是否进行了SDL_VideoInit,如果没有,需要初始化。

完成了VideoInit的初始化后,我们使用LoadLibrary将android平台的opengl es动态库进行加载,同时将动态库里面的一些方法进行保存,作为我们适配android的实质方法,完成对接任务。SDL平台调用绘制,用的是SDL的一套标准,但是具体真正具体到每个平台是需要具体平台的实现,这里就是完成这个对接,使得SDL的方法,最终能操作到android平台上。

完成了opengl es的方法赋值之后,我们需要完成真正的窗口创建。在讲解这个之前,我们讲下android的绘制流程。我们知道,android使用activity进行承载界面,我们普通的View,比如button ,Textview这些,都是在ondraw进行绘制,使用传递的一个参数canvas,这个叫画布。是作用在一个绘制表面上的一套封装,使用canvas的一些api,可以简化我们直接绘制的难度,直接使用写好的画线,画圆,画一个弧度等等。当我们在canvas画好之后,系统会根据当前窗口耳朵层叠关系,透明度,缩放等等,进行将多个窗口排序,混合之后,使用驱动操作,将最终的一屏数据,刷入显卡,然后我们便看到了效果。

使用canvas,有个瓶颈便是,性能问题。ondraw属于主线程,于是乎就不能长时间频繁绘制,这样子会导致手机卡顿,出现anr,为了规避这种情况(特别是游戏,用canvas绘制,只能做比如五子棋,简单的连连看游戏,因为不会大量更新界面),大型的游戏开发,都是使用opengl es,android为了配合opengl es的硬件加速渲染,在上层配置了一个SurfaceView,这个是直接申请了一块绘制表面,独立于activity的其他View,自己独占一份,因此我们不需要使用ondraw绘制,这样子我们就可以单独开启一个绘制线程,单独作用在这个绘制表面,而直接操作绘制表面,会让我们开发效率大大降低。于是,我们将这个绘制表面进行封装,提供一套接口,而这套接口是配合硬件加速开发出来,于是我们的绘制速度会大幅度提升。而我们此处的封装,就是使用eglCreateWindowSurface,如此之后

我们就可以使用gl的一系列方法进行绘制,最后使用gl的swap-buffer将数据刷入绘制表面,然后进行和其他窗口混合,最终显示到屏幕。

本文分享自微信公众号 - 代码GG之家(code_gg_home),作者:陆晓明

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-10-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • android 游戏移植 (一) (文末有福利) | SDL 西游释厄传调试

    游戏效果(不是真实画质) 有没有被惊艳到?你的内心肯定会说,我靠,画质这么渣,画面却如此熟悉。对的,就是如此渣渣的画面,却伴随了我们的童年快乐。 下面我们就详细...

    用户1263308
  • android 游戏移植 (二) | SDL2.0适配 西游释厄传

    SDL系列讲解(一) 简介 SDL系列讲解(二) 环境搭建 SDL系列讲解(三) 工具安装 SDL是什么,能干什么,为什么我们要学习它? SDL系列讲解(四)...

    用户1263308
  • SDL系列讲解(九) 异常退出分析

    SDL系列讲解(一) 简介 SDL系列讲解(二) 环境搭建 SDL系列讲解(三) 工具安装 SDL是什么,能干什么,为什么我们要学习它? SDL系列讲解(四)...

    用户1263308
  • Android模拟绘制极坐标方程

    张风捷特烈
  • 使用BERT和TensorFlow构建多标签文本分类器

    在多标签分类问题中,训练集由实例组成,每个实例可以被分配有表示为一组目标标签的多个类别,并且任务是预测测试数据的标签集。例如:

    代码医生工作室
  • Debian资源库已加入Spectre、Meltdown漏洞检查器

    影响几乎所有现代处理器的“幽灵”(Spectre)和“熔毁”(Meltdown)安全漏洞的余波尚未散尽,软硬件厂商仍在携手努力给平台打补丁。如果你正在运行 De...

    Debian社区
  • 加速 BERT 模型有多少种方法?从架构优化、模型压缩到模型蒸馏最新进展详解!

    原文链接:https://blog.inten.to/speeding-up-bert-5528e18bb4ea

    AI科技评论
  • 加速BERT模型:从架构优化、模型压缩到模型蒸馏

    原文链接:https://blog.inten.to/speeding-up-bert-5528e18bb4ea

    AI研习社
  • 加速BERT:从架构优化、模型压缩到模型蒸馏最新进展详解

    BERT 在 NLP 领域的地位正如 ResNet 在 CV 领域的地位一样,属于里程碑的进展。目前,BERT 已经成为 NLP 深度学习管道中的重要组成部分。

    zenRRan
  • 刚刚,Google发布24个小型BERT模型,直接通过MLM损失进行预训练

    Google最新推出24个精简的BERT模型供下载,赶在白色情人节之前为广大NLP研究者送上一份厚礼。

    新智元

扫码关注云+社区

领取腾讯云代金券