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

时间:2022-04-26
本文章向大家介绍android 游戏移植 (二) | SDL2.0适配 西游释厄传,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

SDL系列讲解(一) 简介

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

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

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

SDL系列讲解(四) demo讲解

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

SDL系列讲解(六) SDL_Activity流程

SDL系列讲解(七) SDL_image教程

SDL系列讲解(八) SDL_ttf教程

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

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

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

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

android SDL系列讲解(十三) 播放音乐库 SDL_mixer教程

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

第一节我们整体来讲了下移植一个 C项目到 android的一些简单概念。

我们这节继续,来从源码级别进行分析,讲解下 FBA游戏移植的过程。

本身游戏模拟器,已经使用 C做好了,同时我们不需要关注里面的算法,只需要关心下,它的输入输出。

输入设备,主要讲的触摸以及按键输入,将这些按键从java端传递到c端,传入到游戏引擎的输入即可,同时关心下按键映射,将模拟器要接收的按键和传输进来的 android端的值,进行对应。

输出设备,主要是屏幕。这里就是我们 SDL存在的意义, SDL 通过对接 androidsurfaceView,将这个里面申请的 surface进行包装,使用 opengl es进行操作,完成界面的绘制。

游戏的声音,使用了 jni,来达到从 c c调用 java,来处理声音的播放。

于是乎,便完成了整体的移植,需要处理的事情。

上面这个移植过程,三方的开源项目已经帮忙实现了。我们要做的是,将其中的 SDL1.3 移植到 SDL2.0 ,这便是我们这节讲解的主要内容。

既然我们知道了, SDL 需要对接的是绘制过程,于是我们就需要找到1.3绘制的代码位置,通过查找,可以在 android_sdlfx.c 里面,看到具体实现。

可以看到,创建了一个 surface,将图片格式设置之后,提供给游戏,让游戏去绘制,然后将这个数据传给 java,完成推送到屏幕上。

我们这里要换的,就是对外提供数据的地方,我们要按照 SDL2.0 创建一个窗口,同时创建一个 surace ,将数据绘制在这个上面,同时默认1.3是将这个数据,搬回到 java端,然后进行刷新。

2.0之后,支持了直接绘制,可以直接使用渲染方法,将数据送到屏幕。

代码主要修改记录如下:

SDL1.3 整个代码去掉,同时将 SDL2.0 加入进来,将适配 android 版本里面,只需要将创建窗口的方式,以及绘制的方式替掉,即可完成移植过程。

我们这节放出修改成 SDL2.0 的核心代码,其他的有兴趣的可以进行实际移植,配置,注意的是,这个项目在 Window 上是编不过的,因为命令行长度限制,所以要在linux环境进行操作。

关于游戏模拟器本身代码,不需要关注。

文件里面,可以看到用到了适配,每个输出设备,都是有这几个方法组成,我们主要关心的是 init ,完成窗口的创建,画布的创建, Exit完成窗口的退出过程。 frame 主要完成每一帧的更新,其他的我们暂时可以不去关注了。

1:更改创建模式,使用2.0的方式。

2:更改创建surface的方式,使用SDL_CreateTexture创建纹理,随后绘制使用

3:设置小窗口大小

4:绘制使用渲染器,将surface更新到渲染器中,然后更新屏幕

看到了么,sdl2.0移植过来就是如此轻松,简单。