SDL

1. SDL简介

 

1.1。什么是SDL?

Simple DirectMedia Layer是一个跨平台开发库,旨在通过OpenGL和Direct3D提供对音频,键盘,鼠标,操纵杆和图形硬件的低级访问。视频播放软件,仿真器以及包括Valve屡获殊荣的目录和许多Humble Bundle游戏在内的流行游戏都使用它

SDL正式支持Windows,Mac OS X,Linux,iOS和Android在源代码中可以找到对其他平台的支持。

SDL用C编写,可与C ++一起使用,并且有绑定可用于其他几种语言,包括C#和Python。

SDL 2.0在zlib许可下分发该许可证允许您在任何软件中自由使用SDL。简单DirectMedia层库(SDL)是一个通用API,可通过OpenGL和跨多个平台的2D帧缓冲区提供对音频,键盘,鼠标,操纵杆,3D硬件的低级访问。

 

1.2。SDL可以做什么?

预先阅读以概述SDL的功能。如果您只是对从1.2到2.0的更改感兴趣,请查看《迁移指南》

视频

  • 3D图形:
    • SDL可以与OpenGL API或Direct3D API结合使用以实现3D图形
  • 加速的2D渲染API:
    • 支持轻松的旋转,缩放和Alpha混合,所有这些均使用现代3D API加速
    • 使用OpenGL和Direct3D支持加速,并且存在软件后备
  • 创建和管理多个窗口

输入事件

  • 提供的事件和API函数:
    • 应用程序和窗口状态更改
    • 鼠标输入
    • 键盘输入
    • 游戏杆和游戏控制器输入
    • 多点触控手势
  • 可以使用SDL_EventState()启用或禁用每个事件

  • 事件在发布到内部事件队列之前,通过用户指定的过滤器功能传递
  • 线程安全事件队列

强制反馈

  • Windows,Mac OS X和Linux支持强制反馈

音讯

  • 如果硬件不支持该格式,则设置8位和16位音频,单声道立体声或5.1环绕声的音频播放,并进行可选转换
  • 音频在单独的线程中独立运行,并通过用户回调机制进行填充
  • 专为定制软件音频混音器而设计,但SDL_mixer提供了完整的音频/音乐输出库

文件I / O抽象

  • 用于打开,读取和写入数据的通用抽象
  • 内置对文件和内存的支持

共享对象支持

  • 加载共享对象(Windows上的DLL,Mac OS X上的.dylib,Linux上的.so)
  • 共享库中的查找功能

线程数

  • 简单的线程创建API
  • 简单线程本地存储API
  • 互斥量,信号量和条件变量
  • 无锁编程的原子操作

计时器

  • 获取经过的毫秒数
  • 等待指定的毫秒数
  • 创建在单独的线程中与代码一起运行的计时器
  • 使用高分辨率计数器进行性能分析

CPU功能检测

  • 查询CPU数量
  • 检测CPU功能和支持的指令集

Endian独立

  • 检测当前系统的字节序
  • 快速交换数据值的例程
  • 读取和写入指定字节序的数据

能源管理

  • 查询电源管理状态

 

1.3。SDL在什么平台上运行?

视窗

  • 使用Win32 API进行显示,并利用Direct3D进行硬件加速
  • 使用DirectSound和XAudio2进行声音

Mac OS X

  • 使用Cocoa进行视频显示,并利用OpenGL进行硬件加速
  • 使用Core Audio播放声音

的Linux

  • 使用X11进行视频显示,并利用OpenGL进行硬件加速
  • 使用ALSA,OSS和PulseAudio API发出声音

的iOS

  • 使用UIKit进行视频显示,并利用OpenGL ES 2.0进行硬件加速
  • 使用Core Audio播放声音

安卓系统

  • 使用JNI接口进行视频显示,并利用OpenGL ES 1.1和2.0进行硬件加速
  • 使用JNI音频回调获取声音
  • 另请参阅Android

 

2.如何获取和安装SDL

您可以获取源代码并进行构建和安装

 

3.从SDL 1.2过渡到2.0

如果您以前使用过SDL 1.2,并且想使用SDL 2.0,请注意有一些API更改,并且您的某些代码需要进行修改。

迁移指南列出了功能差异以及如何使旧代码适应新的SDL 2.0:

原文地址:https://www.cnblogs.com/bluebeecoder/p/13659491.html