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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员入门进阶(免费辅导开题报告)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值