SDL入门教程——(一)Hello World

本文详细介绍了SDL库的基础使用,包括初始化、创建窗口、显示图片等关键步骤,并对比了SDL1.2与SDL2的不同之处,适合初学者快速入门。

SDL入门

其实像SDL、FFMPEG、Opencv 我都是从入门到放弃,我不知道入了几次门了都,用的时候就Google,用完就忘,每次都需要重新搜索关键字。所以后面我的学习过程我都要记录一下,包括我看别人的文章我也要记录下来,有时候记得在哪里看过就是找不到然后就是想用就是不会简直是一个while(true),废话不多说,开始SDL的入门记录吧。

Hello World

配置链接库什么的我就不写了,因为无数遍重复已经死死记住了。直接上代码,我参考了bilibili的一个Up主的视频1

#include <iostream>
#include "SDL2/include/SDL.h"

const int screen_width = 800;
const int screen_height = 600;
int main(int, char**)
{
	SDL_Init(SDL_INIT_VIDEO);
    SDL_Window *window = SDL_CreateWindow("YourGame", 
    									  SDL_WINDOWPOS_UNDEFINED, 
    									  SDL_WINDOWPOS_UNDEFINED, 
    									  screen_width, screen_height, 
    									  SDL_WINDOW_SHOWN);
    SDL_Surface *surface = SDL_GetWindowSurface(window);
    SDL_Surface* blackground_surface = SDL_LoadBMP("Hello.bmp");
    SDL_BlitSurface(blackground_surface, NULL, surface, NULL);
    SDL_UpdateWindowSurface(window);
    SDL_Delay(3000);
    SDL_DestroyWindow(window);
    SDL_Quit();
    return 0;
}

因为SDL输出文字是需要扩展功能,SDL本身是没有设计文字的功能,所以Hello World就先输出图片吧。后面我用到字体时我再补充吧。有兴趣的可以参考:SDL显示图像和文字2

上面代码可以看出几点:

  1. SDL初始化和SDL退出:
    SDL_Init(SDL_INIT_VIDEO);
    
    SDL_Quit();
    
  2. 创建Window和销毁窗口:
    SDL_Window *window = SDL_CreateWindow("YourGame", 
    									  SDL_WINDOWPOS_UNDEFINED, 
    									  SDL_WINDOWPOS_UNDEFINED, 
    									  screen_width, screen_height, 
    									  SDL_WINDOW_SHOWN);
    
    SDL_DestroyWindow(window);
    
  3. 让窗口显示图片:
    SDL_Surface *surface = SDL_GetWindowSurface(window);
    SDL_Surface* blackground_surface = SDL_LoadBMP("Hello.bmp");
    SDL_BlitSurface(blackground_surface, NULL, surface, NULL);
    SDL_UpdateWindowSurface(window)
    
  4. 让窗口停留3秒:SDL_Delay(3000);
各个函数参数的意义3 (在左侧搜索框输入自己要搜索的函数,入门可以跳过这段):

在这里插入图片描述
初始化函数SDL_Init参数的意义: (initialize the SDL library)

Value Description
SDL_INIT_TIMER timer subsystem
SDL_INIT_AUDIO audio su
SDL是Simple DirectMedia Layer(简易直控媒体层)的缩写。它是个跨平台的多媒体库,以用于直接控制底层的多媒体硬件的接口。这些多媒体功能包括了音频、键盘和鼠标(事件)、游戏摇杆等。当然,最为重要的是提供了2D图形帧缓冲(framebuffer)的接口,以及为OpenGL与各种操作系统之间提供了统的标准接口以实现3D图形。从这些属性我们可以看出,SDL基本上可以认为是为以电脑游戏为核心开发的多媒体库。 SDL支持主流的操作系统,包括Windows和Linux。在官方的介绍中,我们可以找到它所支持的其他平台。(SDL supports Linux, Windows, Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX. )。SDL本身从C语言开发,并且能很好的在C++等高级语言中使用。在官方可以看到SDL所支持的语言很多。(Including Ada, C#, Eiffel, Erlang, Euphoria, Guile, Haskell, Java, Lisp, Lua, ML, Objective C, Pascal, Perl, PHP, Pike, Pliant, Python, Ruby, Smalltalk, and Tcl. ) SDL在GNU LGPL version 2下发布,这意味着你可以免费的使用。并且可以免费的用于商业软件的制作(只要你直接使用SDL的动态链接库,Windows下的SDL.dll)。如果你将SDL库编译进了自己的二进制代码中,你需要指明你所使用的SDL库的版本以及包括你自己修改的源代码,并说明这些代码的原始出处。这是很宽松的法律,你可以用如此强大的多媒体库完全合法的免费开发商业游戏。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值