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

作者: 代码GG陆晓明 | 来源:发表于2017-10-28 20:03 被阅读23次

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将数据刷入绘制表面,然后进行和其他窗口混合,最终显示到屏幕。

相关文章

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

    项目合作 创建窗口时序图 时序图细节 看下创建窗口的流程图,我们简单说下过程。窗口创建,会先判断是否进行了SDL_...

  • SDL 创建窗口

    创建一个窗口的过程 _ 自带梯子哦~ 首先来了解一下SDL窗口创建的流程 SDL初始化 创建一个窗口 获取到这个窗...

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

    SDL系列讲解(一) 简介SDL系列讲解(二) 环境搭建SDL系列讲解(三) 工具安装SDL是什么,能干什么,为...

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

    SDL系列讲解(一) 简介SDL系列讲解(二) 环境搭建SDL系列讲解(三) 工具安装SDL是什么,能干什么,为...

  • 使用SDL显示YUV

    SDL 显示 YUV 流程: 1、初始化 Video 子系统;2、创建窗口;3、创建渲染上下文;4、创建纹理;5、...

  • SDL显示YUV

    SDL显示YUV步骤 初始化SDL子系统 SDL_Init(SDL_INIT_VIDEO) 创建窗口 SDL_Cr...

  • SDL系列讲解(六) SDL_Activity流程

    总是会出其不意,讲解随性一些不好吗? 只讲如何使用,明显不是我的风格,于是乎,近期会开展SDL的框架原理的系列分析...

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

    明天会将自己的很早的一部小说发出,一次发出写的所有的六章,如果时间,或者某天突然觉得可以续写了,那么就是它又一次起...

  • SDL 教程 01 : 创建SDL窗口

    示例代码

  • sdl使用入门

    本文通过一个简单示例讲解SDL的基本使用流程。示例中展示一个窗口,窗口里面有个随机颜色快随机移动。当我们鼠标点击关...

网友评论

    本文标题:SDL系列讲解(十二)创建窗口流程

    本文链接:https://www.haomeiwen.com/subject/ojnspxtx.html