SDL

SDL介绍

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

 

SDL(第一版)使用 GNU 宽通用公共许可证为授权方式,意指动态链接(dynamic link)其库并不需要开放本身的源代码。因此诸如《雷神之锤4》等商业游戏也使用SDL来开发。而第二版的SDL则改用Zlib授权来授权。

 

虽然 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渲染支持。

 

测试代码:

复制代码
/***
test2.c
***/
#include"SDL/SDL.h"

int main()
{
    
    //声明表面
    SDL_Surface* hello = NULL;
    SDL_Surface* screen = NULL;
    
    //启动SDL
    SDL_Init(SDL_INIT_EVERYTHING);

    //设置窗口
    screen = SDL_SetVideoMode(480, 208, 32, SDL_SWSURFACE);

    //加载图像
    hello = SDL_LoadBMP("hello.bmp");
    //将图像应用到窗口
    SDL_BlitSurface(hello, NULL, screen, NULL);

    //更新窗口
    SDL_Flip(screen);

    //暂停
    SDL_Delay(5000);
    //释放已加载的图像
    SDL_FreeSurface(hello);

    //退出SDL
    SDL_Quit();
    return 0;
}
复制代码

这里的 hello.bmp 可以从上一节课的图片中随意选择一张,用 ffmpeg 转码就好了,ffmpeg -i xxx.jpg hello.bmp ,这里教程里选用了 frame9.jpg。

ffmpeg -i ./jpgs/frame9.jpg ./hello.bmp

gcc test2.c -o test2 `sdl-config --cflags --libs`

 

然后运行即可。

posted @   王清河  阅读(505)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示