专栏首页代码GG之家SDL系列讲解(七) SDL_image教程

SDL系列讲解(七) SDL_image教程

SDL系列讲解(一) 简介

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

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

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

SDL系列讲解(四) demo讲解

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

SDL系列讲解(六) SDL_Activity流程

前言

我们SDL默认支持的,只能打开BMP格式的图片。然而我们常见的是Png jpg格式的图片,于是我们这节完成SDL借用自带的三方库,来完成加载渲染png等其他图片格式。

SDL_image简介

使用SDL_image,您可以加载流行的图像格式,如BMP,PNM(PPM / PGM / PBM),XPM,LBM,PCX,GIF,JPEG,PNG,TGA和TIFF格式。 这些被加载到你的SDL_Surface上,并且正常地画在屏幕上。同时, 支持Alpha透明度,比如加载PNG图片。

下载配置SDL_image库

打开官网http://www.libsdl.org/projects/SDL_image/

下载这里的 SDL2_image-2.0.1.zip,解压到我们的工程目录jni/SDL2_image下面

下一级目录结构如下,记得不要嵌套啦。(后续移植不强调了,这一注意的是jni下面放的目录,目录里面直接有个Android.mk,系统就是找这个,然后编译,所以记住这点)

然后我们在jni/src/Android.mk里面的

LOCAL_SHARED_LIBRARIES := SDL2

修改成

LOCAL_SHARED_LIBRARIES := SDL2 SDL2_image

将SDL2_image库加载进来。

这里讲解下,这个名字怎么来的,我们去看SDL2_image目录下面的Android.mk 里面有一行

LOCAL_MODULE := SDL2_image

这个指示编译的模块名字

然后我们编译,编译过程有个错误。

我们来到这个文件,修改这个包含为:

#include <machine/cpu-features.h>

改为:

#include <arm-linux-androideabi/ machine/cpu-features.h>

为什么这样子呢?因为这里查找头文件是在ndk下面的ndk-bundle\sysroot\usr\include目录进行查找,所以我们新的ndk包,发现移动到arm-linux-androideabi目录下了,所以要加这个。

同时,如果还有报错,需要去掉我们配置的x86指令集。

具体在jni/Application.mk 里面移除掉

APP_ABI := armeabi armeabi-v7a x86

APP_ABI := armeabi armeabi-v7a

同时将项目下app/build.gradle里面,将

abiFilters "armeabi" ,"armeabi-v7a","x86"

改为

abiFilters "armeabi" ,"armeabi-v7a"

在SDL2_image/Android.mk 里面加入一行:

LOCAL_CFLAGS += -D__ARM_ARCH__

来保证arm下能编译通过。

验证加载JPG图片

在工程的assets目录下面,放入一个test.jpg文件

然后我们修改jni/src/main.c文件,具体修改如下:

编译运行,可以在手机端看到效果。

代码地址:

https://github.com/luxiaoming/SDL-study

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

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

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

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

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

    用户1263308
  • SDL系列讲解(一) 简介

    什么是 SDL Simple DirectMedia Layer(SDL)是一个跨平台开发库,主要提供对音频,键盘,鼠标,操纵杆的操作,通过OpenGL和Di...

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

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

    用户1263308
  • OVS 总体架构、源码结构及数据流程全面解析

    阅读本文大概 4.7 分钟 在前文「从 Bridge 到 OVS」中,我们已经对 OVS 进行了一番探索。本文决定从 OVS 的整体架构到各个组件都进行一个详细...

    企鹅号小编
  • 对话即平台:利用人工智能以及云平台打造你的智能机器人

    摘要 微软中国技术顾问佘泽鹏为我们分享微软如何利用人工智能以及云平台打造智能机器人。 ? dev.modern.ie Web开发最令人头疼的问题就是如何去做兼容...

    IT大咖说
  • Confluence 6 多媒体文件和在页面中显示文件列表

    文件的预览同时也支持 MP3 音频和 MP4 视频文件。Confluence 使用 HTML 5 来播放附加的音频和视频文件。这个意味着这些文件类型的文件格式,...

    HoneyMoose
  • 20页PPT:大数据解读6.3亿电商人群的消费趋势

    华章科技
  • Confluence 6 多媒体文件和在页面中显示文件列表

    文件的预览同时也支持 MP3 音频和 MP4 视频文件。Confluence 使用 HTML 5 来播放附加的音频和视频文件。这个意味着这些文件类型的文件格式,...

    HoneyMoose
  • [Leetcode][python]Simplify Path

    化简Unix系统下一个文件的绝对路径。 输入: path = “/a/./b/../../c/”

    后端技术漫谈
  • Codeforces Round #544 (Div. 3) A. Middle of the Contest(思维)

    题目链接:http://codeforces.com/contest/1133/problem/A

    Ch_Zaqdt

扫码关注云+社区

领取腾讯云代金券