目次 - 概要

# SDL 2.0の概要

## 1. SDLの概要

### 1.1 SDLとは何か?

Simple DirectMedia Layer (SDL) はオーディオ, キーボード, マウス, ジョイスティック, OpenGLやDirect3D経由のグラフィックハードウェアへの低レベルアクセスを提供する開発ライブラリである. 動画再生, エミュレータ, そしてValveの入賞作やHumble Bundleの数多くの作品を含む有名なゲームでも使われている.

SDLはWindows, Mac OS X, Linux, iOS, そしてAndroidに公式に対応している. 他の環境に対応したソースコードも存在する.

最新の対応環境についてはインストールのページを確認すること.

SDLはCで書かれていて, ネイティブのC++で使うことができる. そしてC#やPythonなどの他の言語のバインドも存在する.

最新の対応言語はhttp://www.libsdl.org/languages.phpを確認すること.

SDL 2.0 はzlib licenseの下で配布される. このライセンスの下でSDLはあらゆるソフトウェアで自由に使える.

### 1.2 SDLで何ができるか?

以下がSDLが可能なことの一覧である. 1.2から2.0への変更点を知りたいならばSDL 1.2から2.0への移行を参照すること.

#### ビデオ

- 3Dグラフィック:
  SDLは3DグラフィックとしてOpenGL APIやDirect3D APIと混合で使うことができる
- アクセラレータを使用する2DレンダラーAPI:
  - 簡単な回転, 拡大縮小, アルファブレンディングを行える. これらは全て現在の3D APIによるアクセラレーションを使っている
  - アクセラレーションはOpenGLとDirect3Dに対応している. これらが使えない場合はソフトウェアで行われる
- 複数のウィンドウの生成と管理

#### 入力イベント

- 以下の処理のためのイベントとAPI:
  - アプリケーションとウィンドウの状態の変化
  - マウス入力
  - キーボード入力
  - ジョイスティックとゲームコントローラー入力
  - マルチタッチ ジェスチャー
- イベントは全てSDL_EventState()で有効化/無効化できる
- イベントは全て内部キューに送られる前にユーザが生成したフィルタ関数を通すことができる
- イベントキューはスレッドセーフである

#### 力覚フィードバック

- Windows, Mac OS X, Linuxでは力覚フィードバックに対応している

#### オーディオ

- 8bitと16bit, モノラル/ステレオ/5.1サラウンドの音声再生をハードウェアが対応していなければ最適に変換して行う
- 音声は独立したスレッドでコールバックとして処理する
- ソフトウェアオーディオミキサーを生成するために設計されているが, SDL_mixerライブラリを使えば完全な音声/音楽の出力を行える

#### 抽象化されたファイルI/O

- 汎用的な抽象化されたオープン, データの読み込みと書き込み
- ファイルとメモリが組み込まれている

#### 共有ライブラリ

- 共有ライブラリ(WindowsならばDLL, Mac OS Xならば.dylib, Linuxならば.so)の読み込み
- 共有ライブラリの関数の探索

#### スレッド

- シンプルなスレッド生成API
- シンプルなスレッドローカル領域API
- 相互排他(mutex), セマフォ, 条件変数
- ロックしないプログラミングのためのアトミック操作

#### タイマ

- ミリ秒単位の経過時間の獲得
- ミリ秒単位のウェイト
- 別スレッドで定期的にコードを動作させるタイマの生成
- プロファイリングのための高分解能カウンタ

#### CPU仕様の検査

- CPU数の獲得
- CPU仕様と対応する命令の検査

#### エンディアン非依存

- システムのエンディアンの検査
- データの高速スワップルーチン
- 指定のエンディアンでのデータの読み書き

#### 電源管理

- 電源状態の獲得

### 1.3 SDLが使える環境は?

#### Windows

- 表示に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を使用する

#### Android

- 表示に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 1.2から2.0への移行」には異なる機能の一覧や古いコードをSDL 2.0に合わせる方法がある.

- SDL 1.2から2.0への移行

## SDL Wikiへのリンク

Introduction to SDL 2.0 - SDL Wiki