SDL2.0入门学习记录
来源:互联网 发布:明星变脸软件是什么 编辑:程序博客网 时间:2024/05/24 16:16
简介
SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。目前SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。
上篇安装完vs2010,下面进入正题:开始SDL 2.0入门。我的学习方法是找个入门教程,走一遍。很多教程都翻译自一个基于sdl1.2的tutorials,去下载库时发现已经有2.x了。找个较新的教程看比较好。这里选的是:TwinklebearDev SDL 2.0 Tutorial,可以从下面获得:
英文:http://www.sdltutorials.com/
中文:http://adolfans.github.io/sdltutorialcn/sdl-2-dot-0-tutorial-index/
离线:Csdn(下载需要1积分):http://download.csdn.net/detail/oldmtn/7028385
教程学习
第一节:helloworld
惯例,用hello world来介绍SDL基本使用流程,分四步。
1、包含头文件#include <SDL.h>
2、初始化:SDL_Init(SDL_INIT_EVERYTHING)
3、使用:显示一张图片“hello world”。
这里先创建一个SDL_Window和一个与之绑定的SDL_Renderer:
win = SDL_CreateWindow("Hello World!", 100, 100, 640, 480, SDL_WINDOW_SHOWN);
ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
SDL_Surface加载bmp图片:
bmp = SDL_LoadBMP("../res/Lesson1/hello.bmp");
把SDL_Surface转化为SDL_Texture
tex = SDL_CreateTextureFromSurface(ren, bmp);
使用SDL_RenderClear来清空SDL_Rende,然后使用SDL_RenderCopy来把texture画上去:
SDL_RenderClear(ren);
SDL_RenderCopy(ren, tex, NULL, NULL);
更新屏幕的画面SDL_RenderPresent(ren);
4、退出SDL: SDL_Quit();
问题:在win+vs下编译会连接错误。因为连接器找不到入口man函数,SDL_main.h中把main define成了别的名字。解决办法在#include <SDL.h>前面#define SDL_MAIN_HANDLED或者在main前面#undefmain。这两个方法哪个才是正确的?
第二节:别把所有的东西都塞到main函数中。
本节把一些功能写成了函数,然后在main中只需要调用他们就行了(教程是不是跑题了?)。他们是:
Log输出函数:void logSDLError(std::ostream &os, const std::string &msg);
用bmp初始化一个SDL_Texture:SDL_Texture* loadTexture(const std::string &file, SDL_Renderer *ren)
把SDL_Texture渲染到SDL_Renderer :void renderTexture(SDL_Texture *tex, SDL_Renderer *ren, int x, int y);
问题:1本节用到的模板cleanup怎么编译不过,谁来帮看一下。
2、 SDL_RenderCopy这两个函数的四个参数排列顺序费解,前面两个和后面两个的方向刚好是反着的,谁明白给我讲一下。
第三节:SDL扩展库
本节已SDL_image为例讲SDL扩展库的使用。基本和SDL库使用方法一样,总共分3步:
1、包含头文件#include "SDL_image.h"
2、使用SDL_image库
3、注销:IMG_Quit();
问题:SDL_image库使用前为什么没有类似SDL库的init操作:SDL_init()?
第四节:事件驱动的编程
SDL不但包括图像输出,还支持输入处理。简单介绍了SDL_Event的使用。
问题:附件已实现了“三毛”移动,怎么用不同的按键让他往四个方向移动呢?
第五节:裁剪精灵表
本节主要讲SDL渲染的灵活性,不但可以把SDL_Texture完整地绘制到SDL_Renderer
上,还可以从SDL_Texture中任意位置的一个矩形中的绘制到SDL_Renderer中任意位置的一个矩形中。主要用到了函数SDL_RenderCopy。
第六节:使用SDL_ttf绘制True Type字体
和第三节类似,略
附:
官网:http://www.libsdl.org/index.phpwiki:http://wiki.libsdl.org/FrontPage课程中用到的code:
win+vs版本:http://download.csdn.net/detail/taozuiqizhong/8206475
linux版本:https://github.com/Twinklebear/TwinklebearDev-Lessons
0 0
- SDL2.0入门学习记录
- C::B配置SDL2学习记录
- SDL2.0
- ubuntu下学习SDL2
- SDL2.0学习笔记1---开发环境搭建
- SDL2.0学习笔记3——用SDL画图
- SDL2.0学习笔记4--用SDL画图(SDL_Surface)
- SDL2.0学习笔记5——定时器模块
- SDL2.0学习笔记——事件处理
- SDL2.0 ubuntu complie
- SDL2.0上手试用
- ffmpeg and SDL2.0
- SDL2.0上手试用
- SDL2.0 播放YUV
- sdl2.0示例
- sdl2.0_opencv
- SDL2.0+ffmpeg2.3
- SDL2.0_01_hello world!
- LeetCode: Intersection of Two Linked Lists
- Hbase简单入门之一
- dos下自动键入enter键
- One possible approach to speed-up Ubuntu14.04
- 半夜起来加班
- SDL2.0入门学习记录
- 水银体温计碎了,怎么办?
- JSP详细篇——Servlet过滤器和监听器(二)
- xcode archive 一直是灰色的
- Linux命令类库机制及常用命令_命令操练
- 完全卸载mysql步骤
- CodeForces 490E Restoring Increasing Sequence
- Linux绑定ip与主机名
- 绿色版mysql注册卸载服务方法