当前位置:   article > 正文

SDL2 简单介绍以及Windows开发环境搭建

sdl2

1.简介

SDL(Simple DirectMedia Layer)是一个跨平台的多媒体开发库,使用C语言写成,用于实现音频、图形、输入以及窗口功能的处理。它提供了一个简单、易用的API,可以帮助开发者快速构建跨平台的多媒体应用程序。

SDL库分为 Video、Audio、CD-ROM、Joystick 和 Timer 等若干子系统。

  • Video(图像)—图像控制以及线程(thread)和事件管理(event)。
  • Audio(声音)—声音控制
  • Joystick(摇杆)—游戏摇杆控制
  • CD-ROM(光盘驱动器)—光盘媒体控制
  • Window Management(视窗管理)-与视窗程序设计集成
  • Event(事件驱动)-处理事件驱动

除此之外,还有一些单独的官方扩充函数库。这些库由官方网站提供,并包含在官方文档中,共同组成了SDL的“标准库”:

  • SDL_image—支持时下流行的图像格式:BMP、PPM、XPM、 PCX、GIF、JPEG、PNG、TGA。
  • SDL_mixer—更多的声音输出函数以及更多的声音格式支持。
  • SDL_net—网络支持。
  • SDL_ttf—TrueType字体渲染支持。
  • SDL_rtf—简单的RTF渲染支持。

2.SDL库的主要特点

  • 简单易用:SDL库提供了一套简洁清晰的API,可以快速上手。它的文档详尽,示例丰富。
  • 跨平台:SDL库可以在多个操作系统上使用。
  • 多媒体处理:SDL库提供了对音频、图形的处理能力。
  • 输入处理:SDL库可以处理多种输入设备,包括键盘、鼠标、游戏手柄等。
  • 窗口管理:SDL库提供了窗口管理功能,可以创建和管理窗口。

3.编译

SDL2.0源码下载地址:

GitHub - libsdl-org/SDL at SDL2

解压源码包:

使用cmake进行编译:设置源码的路径,以及编译后的存放路径,

点击Configure,再点击Generate,最后Open Project,编译成库。

 

最后库文件生成到Release目录下。

4.配置

新建解决方案工程文件SDL2Test.sln

在解决方案工程文件SDL2Test.sln基础上新建项目SinglestTest。

在SinglestTest同级目录下新建目录thirdPart

thirdPart目录结构如下所示thirdPart\SDL2

分别将编译好的lib、dll库文件放到lib目录、bin目录下。

将源码中的SDL-SDL2\include目录下所有文件拷贝到include目录下。

SinglestTest工程配置include和lib。

C/C++->常规->附加包含目录:$(SolutionDir)thirdPart\SDL2\include

链接器->常规->附加库目录:$(SolutionDir)thirdPart\SDL2\lib

链接器->输入->附加依赖项:SDL2.lib

 

至此环境已经配置完成。

5.示例

  1. // SinglestTest.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
  2. //
  3. #include <iostream>
  4. #include <SDL.h>
  5. #undef main
  6. int main()
  7. {
  8. SDL_Window *window = SDL_CreateWindow("demo", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_SHOWN);
  9. SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
  10. bool quit = false;
  11. SDL_Event event;
  12. SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
  13. while (!quit) {
  14. while (SDL_PollEvent(&event)) {
  15. switch (event.type) {
  16. case SDL_QUIT:
  17. quit = true;
  18. break;
  19. case SDL_MOUSEMOTION:
  20. if (SDL_GetMouseState(NULL, NULL) &SDL_BUTTON(1))
  21. SDL_RenderDrawPoint(renderer, event.motion.x, event.motion.y);
  22. break;
  23. }
  24. }
  25. SDL_RenderPresent(renderer);
  26. SDL_Delay(1000 / 60);
  27. }
  28. SDL_DestroyWindow(window);
  29. SDL_DestroyRenderer(renderer);
  30. return 0;
  31. }

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号