SDL 开发实战(一):SDL介绍及开发环境配置

一、什么是SDL?

SDL是 “Simple DirectMedia Layer”的缩写,SDL是一个开源的跨平台的多媒体库,它通过OpenGL和2D视频帧缓冲,提供了针对音频、视频、键盘、鼠标、控制杆及3D硬件的低级别的访问接口。它在MPEG播放软件、模拟器以及许多游戏中得到了广泛的应用。SDL 支持多种操作系统,如Linux, Windows, MacOS, Mac OS X, FreeBSD等等。SDL采用GNU的LGPL第二版许可发行,该许可允许你自由地链接其动态链接库,甚至可以在商业软件中自由地使用。

SDL官网:http://www.libsdl.org/index.php

二、 SDL 开发环境配置

学习阶段推荐使用Visual Studio进行学习,因为环境配置方面相对来说比较简单。后续需要向其他平台迁移的时候,再进一步深入学习和整理。

目前SDL有两个版本 1.2 和 2.0,建议学习阶段使用 SDL 2.0。

1. 下载SDL Development Libraries 

下载地址为:http://www.libsdl.org/download-2.0.php

解压缩文件,将这个文件夹拷贝到任意地方。

2. 在Visual Studio 中新建一个控制台项目

将第1步解压的文件的include目录和lib目录拷贝到项目的目录下。

3. 添加include目录

右键打开项目的属性窗口,找到 C/C++,添加附加包含目录:

4. 添加 library 目录

将lib目录添加配置进来:

5. 添加"附加依赖项"

先找到属性-->链接器--> 输入---> 附加依赖项,添加附加依赖项:SDL2.lib;SDL2main.lib;

6. 编写HelloWorld代码,验证环境配置

// SDL.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include "pch.h"
#include <iostream>

extern "C" {
#include "SDL.h"
}

int main(int argc, char* argv[]) 
{
if (SDL_Init(SDL_INIT_VIDEO)) { std::cout << "SDL_Init Error: " << SDL_GetError() << std::endl; return 1; } SDL_Window *win = SDL_CreateWindow("Hello World!", 100, 100, 640, 480, SDL_WINDOW_SHOWN); if (win == nullptr) { std::cout << "SDL_CreateWindow Error: " << SDL_GetError() << std::endl; return 1; } SDL_Renderer *ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); if (ren == nullptr) { SDL_DestroyWindow(win); std::cout << "SDL_CreateRender Error: " << SDL_GetError() << std::endl; SDL_Quit(); return 1; } std::string imagePath = "1.bmp"; SDL_Surface *bmp = SDL_LoadBMP(imagePath.c_str()); if (bmp == nullptr) { SDL_DestroyRenderer(ren); SDL_DestroyWindow(win); std::cout << "SDL_LoadBMP Error: " << SDL_GetError() << std::endl; SDL_Quit(); return 1; } SDL_Texture *tex = SDL_CreateTextureFromSurface(ren, bmp); SDL_FreeSurface(bmp); if (tex == nullptr) { SDL_DestroyRenderer(ren); SDL_DestroyWindow(win); std::cout << "SDL_CreateTextureFromSurface Error: " << SDL_GetError() << std::endl; SDL_Quit(); return 1; } for (int i = 0; i < 3; ++i) { SDL_RenderClear(ren); SDL_RenderCopy(ren, tex, NULL, NULL); SDL_RenderPresent(ren); SDL_Delay(1000); } SDL_DestroyTexture(tex); SDL_DestroyRenderer(ren); SDL_DestroyWindow(win); SDL_Quit(); // Return return 0; }

7. 查看代码运行结果

至此,我们的SDL的环境配置成功了,并且能够正常使用了。

猜你喜欢

转载自www.cnblogs.com/renhui/p/10449936.html
SDL