文档章节

Ch01: Hello,SDL

Mousa
 Mousa
发布于 2017/04/04 11:24
字数 580
阅读 107
收藏 1
SDL

我认为使用SDL的优势在于:

  • 鼻祖级的跨平台开源框架
  • 始终如一的代码,API几乎很少变动
  • sf/Git-hub数以万计的开源project,其中不乏商业案例可以借签学习
  • SDL 2.x版本加入了对Android的支持,使用NDK即可编译
  • 同样有其他语言的binding,如Pascal, Objective-C, Python, Ruby,and Java ...
  • Game,模拟器,播放器,图形库等领域都能看到它的身影

**废话不说了,let's go ** 示例代码创建一个最基本的SDL窗体。

输入图片说明

#include <SDL.h>
#include <iostream>
using namespace std;

int main(int argc, char** argv)
{
	SDL_Window* pWindow = 0;
	SDL_Renderer *pRenderer = 0;
	bool bRunning = true;
	if (SDL_Init(SDL_INIT_EVERYTHING) < 0)
	{
		cerr << "SDL_Init fail" << endl;
		return EXIT_FAILURE;
	}
	pWindow = SDL_CreateWindow("Hello,SDL",
		SDL_WINDOWPOS_CENTERED,
		SDL_WINDOWPOS_CENTERED,
		640, 480, SDL_WINDOW_SHOWN);
	if (pWindow != nullptr)
	{
		pRenderer = SDL_CreateRenderer(pWindow,
			-1, 0);
	}
	else
		return EXIT_FAILURE;
	SDL_SetRenderDrawColor(pRenderer, 0, 0, 0, 255);
	SDL_Event event;
	while (bRunning)
	{
		if (SDL_PollEvent(&event))
		{
			switch (event.type)
			{
			case SDL_QUIT:
				bRunning = false;
				break;
			default:
				break;
			}
		}
		SDL_RenderClear(pRenderer);
		SDL_RenderPresent(pRenderer);
	}
	SDL_DestroyWindow(pWindow);
	SDL_DestroyRenderer(pRenderer);
	SDL_Quit();

	return 0;
}

SDL_Init

int SDL_Init(Uint32 flags)
  • SDL_Init 其实是调用SDL_InitSubSystem() 初始化子系统,包含以下flags,
  • SDL_INIT_TIMER
  • SDL_INIT_AUDIO
  • SDL_INIT_VIDEO
  • SDL_INIT_JOYSTICK
  • SDL_INIT_HAPTIC
  • SDL_INIT_GAMECONTROLLER
  • SDL_INIT_EVENTS
  • SDL_INIT_EVERYTHING
  • SDL_INIT_NOPARACHUTE 可以使用或运算符| 同时初始化若干子系统,如
SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO);

另外也可以使用SDL_WasInit 来检查子系统是否初始化成功。

SDL_Renderer* SDL_CreateRenderer(SDL_Window* window,
                                 int         index,
                                 Uint32      flags)

index 可以理解为当前的支援渲染的显卡索引, 赋值为-1 使用第一个显卡

flags 有以下3个可供选择

  • SDL_RENDERER_SOFTWARE

  • SDL_RENDERER_ACCELERATED

  • SDL_RENDERER_PRESENTVSYNC

  • SDL_RENDERER_TARGETTEXTURE

  • SDL_Window ,SDL_Renderer 可以使用SDL_DestroyWindow(),SDL_DestroyRenderer()销毁

  • SDL_Event 循环

  • 渲染和绘制操作通常独立到单独的函数中,如

void draw (SDL_Renderder*)
{
    //draw something...
}
void render( )
{
     SDL_RenderClear(pRenderer);
     draw(pRenderer);
     SDL_RenderPresent(pRenderer);
}

本文参考Shaun Mitchell 《SDL Game Development》

© 著作权归作者所有

共有 人打赏支持
Mousa
粉丝 17
博文 7
码字总数 8690
作品 0
苏州
程序员
加载中

评论(2)

Mousa
Mousa
是的
B
BlitBu
这个是SDL2吗
SDL Simple DirectMedia Layer

一、简介 SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码 就可以开...

理性编程
2016/06/17
5
0
Android原生(Native)C开发

转载: Android原生(Native)C开发之一 环境搭建篇 转载: Android原生(Native)C开发之二 framebuffer篇 转载: Android原生(Native)C开发之三 鼠标事件篇(捕鼠记) 转载: Android原生(Native)C开...

垂盆草
2012/11/13
0
0
Hi3519V101移植SDL+FreeType+SDL_ttf

目录 目录 前言 源码下载 SDLFreeTypeSDL_ttf库编译过程 测试 总结 番外 前言 刚开始接触海思的时候要实现的功能就是OSD显示,虽然功能简单,但是要花了很长的时间,主要是对海思平台不够了解...

simonforfuture
2017/11/25
0
0
Metal入门资料001-Metal framework介绍

写在前面: 对Metal技术感兴趣的同学,可以关注我的专题:Metal专辑 也可以关注我个人的简书账号:张芳涛 所有的代码存储的Github地址是:Metal Metal framework介绍 在WWDC 2014 iOS和上发布...

张芳涛
06/05
0
0
ubuntu安装使用ffmpeg

环境:ubuntu 12.04 LTS (1)到http://www.ffmpeg.org/download.html下载最新版ffmpeg 也可以用这个命令: git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg yasm是汇编编译器,因为f...

7哥
2016/09/30
12
0

没有更多内容

加载失败,请刷新页面

加载更多

负载均衡的解决方案有哪些

负载均衡器服务可满足大型组织的需求,支持所有数据中心和跨数据中心高可靠性场景。 本地负载均衡,通过附带或者未附带持久性覆盖选项,Incapsula支持各种负载均衡算法,以优化服务器之间的流...

上树的熊
41分钟前
4
0
Java实现在线打开word文档加盖印章/盖章/签名功能

前言: 我们知道,大型一点的OA办公系统都会有很多在线处理office办公文档的需求。其中有一点也基本绕不开,那就是为文档盖章或添加手写签名来保护文档,让被盖章的文档不再被编辑。 在Java中...

山里的红杏
48分钟前
5
0
js控制输入正负数,小数点后保留两位

//限制数字function clearNoNum(obj){ //修复第一个字符是小数点 的情况. if(obj.value !=''&& obj.value.substr(0,1) == '.'){ obj.value=""; } obj.value ...

一直在成长的程序猿
51分钟前
2
0
动态代理

具体场景 为了使代理类与被代理类对第三方有相同的函数,代理类与被代理类一般实现一个公共的interface,定义如下 public interface Subject { void rent(); void hello(String s)...

wuyiyi
54分钟前
2
0
时间字段

我们看看这几个数据库中(mysql、oracle和sqlserver)如何表示时间 mysql数据库:它们分别是 date、datetime、time、timestamp和year。date :“yyyy-mm-dd”格式表示的日期值 time :“hh:...

DemonsI
56分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部