SDL库

|--SDL (SDL游戏库)

SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。
SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码
就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。
目前SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。

|--简介

SDL(Simple DirectMedia Layer)被广泛的用于许多著名的游戏。
最著名的游戏是赢得Linux组游戏开发大奖:
权利的召唤(Civilization: Call To Power)。
SDL的作者是Sam Lantinga,
Loki Entertainment Software的主力程序员(Lead Programmer)

|--功能介绍

  ·视频

设置8bpp或更高的任意色彩深度的视频模式。
如果某个模式硬件不支持,可以选择转化为另一模式。
直接写入线性的图像帧缓冲(framebuffer)。
用颜色键值(colorkey)或者alpha混合属性创建surface。
Surface的blit能自动的转化为目标格式。blit是优化过的,并能使用硬件加速。
x86平台上有针对MMX优化过的blit。
硬件加速的blit和fill(填充)操作,如果硬件支持的话。

·事件

提供以下事件:
应用程序的visibility发生改变
键盘输入
鼠标输入
用户要求的退出
每种事件都能通过SDL_EventState()关闭或者打开。
事件经由用户指定的过滤函数再被加入到内部的事件队列。
线程安全的事件队列。

·音频

  设置8位和16位的音频,单声道或者立体声,如果格式硬件不支持,可以选择转换。
  由独立的线程执行音频部分,并提供用户回调(callback)机制。
  设计上考虑到了客户定制的软混音器,
  但实际上在例程中就包含了一个完整的音频/音乐输出库。

·CD音频

     完整的CD音频控制API
   ·线程

      简单的线程创建API
      用于同步的简单的二进制信号量(semaphores)
  ·定时器

    读取已流逝的毫秒数。
    等待指定的毫秒数。
     设置一个10毫秒精度的周期性定时器。
  ·字节序无关

    侦测当前系统的字节序
    快速转换数据的函数
    读写指定字节序的数据
|--支持系统

 ·Linux
    视频显示使用X11,利用XFree86 DGA扩展的优势,全屏显示使用新的w MTRR加速。
    声音使用OSS API。
    使用clone()系统调用和SysV IPC,或者glibc-2.1的pthreads实现线程。
  ·Win32
    有两个版本,一个是适合所有基于Win32的系统的安全版本,
    另一个是基于DirectX的高性能版本。
    安全版本的视频显示采用GDI。高性能版本采用DirectDraw,并支持硬件加速。
    安全版本的音频回放采用waveOut API。高性能版本采用DirectSound
  ·BeOS
    视频显示采用BWindow。
    音频回放采用BSoundPlayer API。
  ·非正式的移植版本,进展中Solaris, IRIX, FreeBSD MacOS
|--其它

SDL内置了调用OpenGL的函数。
通过使用SDL_image、SDL_ttf、SDL_mixer、SDL_net等外部扩展库,
可以轻松实现JPG、PNG、TIFF图像的加载使用,TrueType字体的使用,MP3文件的使用、网络相关的使用等。
SDL也有其他语言的包装,可以在这里查看 SDL用C语言写成,
但是可以很容易在C++下面工作,并且SDL绑定了许多其它的语言,
这其中就包括Ada, C#, Eiffel, Erlang, Euphoria, Guile, Haskell,
Java, Lisp, Lua, ML, Objective C, Pascal, Perl, PHP, Pike,
Pliant, Python, Ruby, and Smalltalk。
包装得比较好的是python语言的pygame。
不过仍然建议你熟悉c/c++环境下的SDL后再使用,会得心应手许多。

|--SDL版权

   SDL在GNU LGPL 2(一个国际上的开源组织)下发布,
  这个版本允许你将SDL以动态链接库(dynamic link library)的形式免费地用于商业游戏软件的开发。

转载于:https://www.cnblogs.com/xuzhaoping/p/11072774.html

### SDL的使用指南与下载 #### 1. SDL简介 SDL(Simple DirectMedia Layer)是一个跨平台的开发,主要用于多媒体应用程序的开发。它提供了对音频、键盘、鼠标、游戏控制器以及2D图形的支持[^1]。 #### 2. 如何获取和安装SDL - **下载SDL2** 用户可以从官方站点下载SDL2。通常,下载页面会提供预编译的二进制文件以及源代码包。对于Windows用户,可以直接下载包含`.lib`和`.dll`文件的开发包;而对于Linux用户,可以使用包管理器如`apt-get`进行安装[^1]。 - **解压后的目录结构** 解压SDL源码包后,可以看到以下主要目录: - `/docs`:包含SDL的文档资料。 - `/examples`:提供各种使用SDL的示例程序。 - `/src`:包含SDL的所有源代码文件。 - `/lib`:存放编译好的文件,例如`.lib`、`.dll`或`.a`文件[^2]。 #### 3. 在Visual Studio中配置SDL2 - 下载并解压SDL2开发包后,需要将头文件(`include`目录)添加到项目的包含路径中,并将文件(`lib`目录)添加到链接器路径中。 - 同时,在项目设置中链接必要的文件,例如`SDL2.lib`和`SDL2main.lib`。 - 如果在运行时需要动态链接(DLL),请确保将`SDL2.dll`放置在可执行文件的同一目录下[^1]。 #### 4. 使用CMake配置SDL2 - 在CMakeLists.txt中添加以下内容以查找并链接SDL2: ```cmake find_package(SDL2 REQUIRED) include_directories(${SDL2_INCLUDE_DIRS}) add_executable(my_sdl_program main.cpp) target_link_libraries(my_sdl_program ${SDL2_LIBRARIES}) ``` 通过这种方式,可以简化跨平台的构建过程[^1]。 #### 5. 创建一个简单的SDL2程序 以下是一个基本的SDL2程序示例,展示了如何创建窗口并处理事件循环: ```c #include "SDL.h" int main(int argc, char* argv[]) { SDL_Init(SDL_INIT_VIDEO); // 初始化SDL视频子系统 SDL_Window* window = SDL_CreateWindow("Hello SDL2", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_SHOWN); if (window == NULL) { // 检查窗口是否成功创建 return -1; } SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); SDL_Event e; bool quit = false; while (!quit) { // 主事件循环 while (SDL_PollEvent(&e)) { if (e.type == SDL_QUIT) { // 检测退出事件 quit = true; } } SDL_SetRenderDrawColor(renderer, 0xFF, 0x00, 0x00, 0xFF); // 设置渲染颜色为红色 SDL_RenderClear(renderer); // 清空渲染目标 SDL_RenderPresent(renderer); // 显示渲染结果 } SDL_DestroyRenderer(renderer); // 销毁渲染器 SDL_DestroyWindow(window); // 销毁窗口 SDL_Quit(); // 退出SDL return 0; } ``` 上述代码展示了如何初始化SDL、创建窗口、处理事件循环以及清理资源[^4]。 #### 6. 学习资源 如果需要更多关于SDL的学习资料,可以参考一些综合性的学习包,例如“SDL最最全学习资料.zip”,其中包含了示例代码、网站链接以及PDF文档等[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值