
- 外文名
- SDL
- 广泛的用于
- 许多著名的游戏
- 性 质
- 开放源代码的跨平台多媒体开发库
- 全 称
- Simple DirectMedia Layer
-
SDL
2017-12-05 09:57:10SDL库的作用说白了就是封装了复杂的视音频底层操作,简化了视音频处理的难度。 以下转自WiKi:SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音...SDL库的作用说白了就是封装了复杂的视音频底层操作,简化了视音频处理的难度。
以下转自WiKi:SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。目前SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。
SDL使用GNU宽通用公共许可证为授权方式,意指动态链接(dynamic link)其库并不需要开放本身的源代码。因此诸如《雷神之锤4》等商业游戏也使用SDL来开发。结构
虽然SDL时常被比较为‘跨平台的DirectX’,然而事实上SDL是定位成以精简的方式来完成基础的功能,它大幅度简化了控制图像、声音、输出入等工作所需撰写的代码。但更高级的绘图功能或是音效功能则需搭配OpenGL和OpenAL等API来达成。另外它本身也没有方便创建图形用户界面的函数。
SDL在结构上是将不同操作系统的库再包装成相同的函数,例如SDL在Windows平台上其实是DirectX的再包装,旧版本包装的是DirectX 5,现时的版本(SDL 1.2)则是DirectX 7。而在使用X11的平台上(包括Linux),SDL则是与Xlib库沟通来输出图像。
虽然SDL本身是使用C语言写成,但是它几乎可以被所有的编程语言所使用,例如:C++、Perl、Python(借由pygame库)、Pascal等等,甚至是Euphoria、Pliant这类较不流行的编程语言也都可行。
SDL库分为 Video、Audio、CD-ROM、Joystick 和 Timer 等若干子系统,除此之外,还有一些单独的官方扩充函数库。这些库由官方网站提供,并包含在官方文档中,共同组成了SDL的“标准库”:
SDL_image—支持时下流行的图像格式:BMP、PPM、XPM、 PCX、GIF、JPEG、PNG、TGA。
SDL_mixer—更多的声音输出函数以及更多的声音格式支持。
SDL_net—网络支持。
SDL_ttf—TrueType字体渲染支持。
SDL_rtf—简单的RTF渲染支持。子系统
SDL将功能分成下列数个子系统(subsystem):
Video(图像)—图像控制以及线程(thread)和事件管理(event)。
Audio(声音)—声音控制
Joystick(摇杆)—游戏摇杆控制
CD-ROM(光盘驱动器)—光盘媒体控制
Window Management(视窗管理)-与视窗程序设计集成
Event(事件驱动)-处理事件驱动 -
sdl
2015-07-10 14:57:06SDL2源代码分析8:视频显示总结 2014-11-18 00:25 阅读(2704) 评论(3) SDL2源代码分析7:显示(SDL_RenderPresent()) 2014-11-09 00:59http://blog.csdn.net/leixiaohua1020/article/category/2619497
-
SDL.SDL.SDL_Method compared to c++'s sdl.sdl_function
2020-12-26 02:31:14<div><p>please remove the extra SDL_ prefix at the end its basicly the same as saying SDL.Method() - this is hard to type out since we have to type SDL 2 times where in c++ you only need to do... -
SDL_BuildAudioCVT / SDL_ConvertAudio in SDL1
2020-12-05 02:55:08<div><p>Is there a reason that functions SDL_BuildAudioCVT / SDL_ConvertAudio in SDL2 are using native functions, but in SDL1 they are "implemented" using my_SDL_BuildAudioCVT / my_SDL_... -
SDL - SDL事件
2020-07-05 22:01:15SDL事件 函数 SDL_WaitEvent(): 等待事件; SDL_PushEvent; 发送一个事件(事件入队); SDL_PumpEvents(): 将硬件设备产生的事件放入事件队列,用于读取事件,在调用该函数前,必须调用SDL_PumpEvents搜集...SDL事件
函数
SDL_WaitEvent(): 等待事件;
SDL_PushEvent; 发送一个事件(事件入队);
SDL_PumpEvents(): 将硬件设备产生的事件放入事件队列,用于读取事件,在调用该函数前,必须调用SDL_PumpEvents搜集键盘等事件;
SDL_PeepEvents(): 从事件队列提取一个事件
数据结构:
SDL_Event: 事件结构体;
示例demo:
#include <SDL.h> #include <iostream> #define SDL_USER_DEF_QUIT_EVENT (SDL_USEREVENT + 2) //用户自定义事件 int main(int argc, char* argv[]) { SDL_Window* window = nullptr; SDL_Init(SDL_INIT_VIDEO); window = SDL_CreateWindow(("Basic Window"), SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE); if (!window) { std::cout << "Can't Create window, err:" << SDL_GetError() << std::endl; return 1; } //event SDL_Event event; int nExitCode = 0; while (true) { SDL_WaitEvent(&event); switch (event.type) { case SDL_KEYDOWN: //键盘事件 switch (event.key.keysym.sym) { case SDLK_a: std::cout << "key down a" << std::endl; break; case SDLK_b: std::cout << "key down b" << std::endl; break; case SDLK_c: std::cout << "key down c" << std::endl; break; case SDLK_d: std::cout << "key down d" << std::endl; break; case SDLK_q: std::cout << "key down q, ready to exit" << std::endl; SDL_Event eventQuit; eventQuit.type = SDL_USER_DEF_QUIT_EVENT; SDL_PushEvent(&eventQuit); //自定义消息入队 break; default: printf("key down 0x%x\n", event.key.keysym.sym); break; } break; case SDL_MOUSEBUTTONDOWN: //鼠标按下事件 if (event.button.button == SDL_BUTTON_LEFT) { printf("mouse button down left\n"); } else if (event.button.button == SDL_BUTTON_RIGHT) { printf("mouse button down right\n"); } break; case SDL_USER_DEF_QUIT_EVENT: std::cout << "quit event received" << std::endl; nExitCode = 1; break; case SDL_MOUSEMOTION: printf("mosue move (%d, %d)\n", event.button.x, event.button.y); break; default: break; } if (nExitCode) break; } SDL_Delay(5000); SDL_DestroyWindow(window); SDL_Quit(); return 0; }
-
sdl操作基础
2020-05-28 21:55:54SDLSDL
源码下载地址:http://www.libsdl.org/
或者hg clone http://hg.libsdl.org/SDL (hg官网下载工具)
vscode安装cmake插件编译
主要函数和结构
- 结构
- SDL_Surface内存数据
- SDL_Renderer相当于gdi的dc
- SDL_Texture材质画板
- 函数
- SDL_CreateWindowFrom窗口句柄转SDL_Window
- SDL_SetRenderDrawColor设置颜色,SDL_RenderFillRect填充
- SDL_CreateWindowFramebuffer帧数据缓冲区,屏幕数据缓存
参考
https://blog.csdn.net/cyf15238622067/article/details/82907362
-
SDL - SDL多线程
2020-07-05 22:15:43SDL多线程 SDL线程创建: SDL_CreateThread; SDL 线程等待: SDL_WaitThread; SDL 互斥锁: SDL_CreateMutex / SDL_DestroyMutex; SDL 锁定互斥: SDL_LockMutex / SDL_UnlockMutex; SDL条件变量(信号量... -
SDL SDK + SDL Image
2011-09-30 13:58:34SDL_Image SDL SDLProgram SDL_Image SDL SDLProgram SDL_Image SDL SDLProgram SDL_Image SDL SDLProgram -
【SDL】SDL简介
2016-08-29 15:04:571. SDL简介 SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux... -
SDL2pp include path for SDL2 doesn't follow SDL2 conventions
2020-12-25 18:52:50<div><p>SDL2pp assumes it can find SDL.h (and "sibling" headers) via <code>#include <SDL2/SDL.h></code>. <p>This goes against the expectations of SDL2, as can be seen e.g. by running ... -
SDL 介绍
2020-12-27 00:49:30一、SDL的使用 加头文件 #include<SDL.h> 初始化SDL 退出SDL SDL 主要用在渲染 SDL 渲染窗口 初始化:SDL_Init(),SDL_Quit() 创建窗口:SDL_CreatWindow() 销毁窗口, SDL_DestoryWindow() 创建一个... -
SDL SDL_CondWait及SDL_CondSignal使用
2018-01-22 15:02:46头文件#include "SDL.h"#include "SDL_thread.h"int SDL_CondWait(SDL_cond *cond, SDL_mutex *mut);//等待条件变量SDL_CondWait:释放传递进来的锁,然后当条件变量满足的时候,等待其他的线程调用SDL_CondSignal... -
SDL之SDL_OpenAudioDevice与SDL_OpenAudio
2018-09-27 13:54:22函数原型: SDL_AudioDeviceIDSDL_OpenAudioDevice(const char *device, int iscapture, const SDL_AudioSpec * desired, SDL_AudioSpec * obtained, int allowed_changes) ... -
SDL2_INCLUDE_DIRS and SDL_LIBRARIES should override sdl2-config
2020-12-26 20:00:03If a 64-bit SDL2 is available but a 32-bit SDL2 is not, FAudio tries to use the system SDL2 for the 32-bit build, which doesn't work. <p>The system SDL2 should be ignored in all cases when these ... -
SDL: Add experimental support for SDL2
2020-11-27 20:46:47- SDL2 can be explicitly enabled by setting SDL_CONFIG when running configure instead of --enable-sdl2 <p>This is only minimally tested.</p><p>该提问来源于开源项目:scummvm/scummvm</p></div> -
Accessing "SDL_Window" and "SDL_Renderer" Still w/ SDL-GPU
2020-11-22 10:21:09They have code that integrates with SDL2 but it uses SDL_Window, SDL_Renderer, SDL_SetRenderDrawBlendMode, SDL_RenderDrawPoint, etc. in its implementation. <p>SDL-GPU seems to replace the SDL_... -
SDL介绍
2018-11-15 03:11:30SDL介绍 -
SDL2常用函数&结构分析:SDL_Renderer&SDL_CreateRenderer&SDL_RenderCopy&SDL_RenderPresent
2019-05-09 23:30:31SDL_Renderer SDL_Renderer是一个结构体,用来表示SDL2中渲染器的状态。从代码的使用上来讲,你也可以把它视为渲染器本身。我们可以利用它产生纹理,也可以用来渲染视图。通常,SDL_Renderer实例由SDL_...
-
细多管CPC线性菲涅耳聚光系统仿真及实验研究
-
InstallAnywhere2009
-
全网唯一的为GIS+BIM而生的cesiumjs或cesium视频教程
-
preflight-2.0.13.jar
-
Array.prototype.includes监测数组中是否包含某个元素
-
基于SSM的电影购票系统
-
Java无损导出及转换word文档
-
量化高频交易系统tick数据采集
-
Application.properties配置大全
-
High responsivity and near-infrared photodetector based on graphene/MoSe2 heterostructure
-
SMT回流焊的温度曲线.pdf
-
PADS覆铜技巧
-
【数据分析-随到随学】Hive详解
-
Excel高级图表技巧
-
SystemML大规模机器学习,优化算子融合方案的研究
-
基于CAN总线的数据可靠性传输
-
1号店个性化推荐实践 PDF分享
-
Appium自动化测试套餐
-
相对平行直线扫描计算机分层成像研究
-
每日一题:第七十二题