「SDL」のその他の用法については「SDL (曖昧さ回避)」をご覧ください。
Simple DirectMedia Layer開発元Sam Lantinga
SDL (Simple DirectMedia Layer) は、C言語で書かれたクロスプラットフォームのマルチメディアライブラリである。グラフィックの描画やサウンドの再生などのAPIを提供する。オーディオ、キーボード、マウス、ジョイスティック、そしてOpenGLおよびDirect3Dを経由したグラフィックスハードウェアへのローレベルなアクセスを提供するよう設計されている。Windows、macOS、Linux、iOS、Androidを公式にサポートしている。SDLそのものはOS間の違いを吸収するための最低限の抽象化しか提供しないが、SDLで使えるフォントやネットワーク、スプライトなどの多数の補助ライブラリ(後述)が公開されている。
2021年2月7日に開発ベースをGitHubに移動するとアナウンスがあった[2]。 SDL自身はC言語で書かれており、C/C++向けのインタフェースのみが公式に提供されているが、Ada、C#、Java、Lua、Pascal、Perl、Python、Ruby、Rust、Smalltalkなどの各種プログラミング言語向けのバインディング(ラッパー)もコミュニティによって開発されている[3]。 Smalltalk環境であるSqueak, Pharoでは開発環境のWindowを描画する土台としてSDLが使われている。[1] SDLは画面の描画にOSによって異なるAPIを使う。SDL 1.2の場合、WindowsではDirectDrawあるいはGDIが、LinuxではXlibが使用される。ただし、環境変数「SDL_VIDEODRIVER」を変更すれば、プログラムを書き換えることなく別のAPIを使って表示することも可能になっている[4]。利用可能なドライバーはプラットフォームおよびSDLのコンパイル時オプションに依存する。 同様に、音声出力に使うAPIも環境変数SDL_AUDIODRIVERで変更が可能。 SDL 2.0では、ウィンドウ作成時にフラグを指定することで、OpenGLやVulkanを直接利用した3D描画をサポートできる[5]。 2DグラフィックスのレンダラーSDL_Rendererは、SDL_SetHint()とSDL_HINT_RENDER_DRIVERを使用して、優先的に選択させたいバックエンドのヒントを指定することが可能である[6]。
言語バインディング
使用例
SDLが使用するAPI
ギャラリー
en:Unknown Horizons
en:0 A.D.
Hedgewars
en:Frets on Fire
OpenTTD
The Battle for Wesnoth
en:Oolite
en:Secret Maryo Chronicles
en:Trine
補助ライブラリ
SDL_image-さまざまな画像形式をサポートする。
SDL_mixer-さまざまな音声形式をサポートする。
SDL_net-ネットワークをサポートする。
SDL_ttf-TrueTypeフォントをサポートする。
SDL_rtf-Rich Text Format形式の文書をサポートする。
⇒SDL_gfx-図形を描くための補助ライブラリ。
出典^ Announcing SDL 2.30.0 - SDL Announcements - Simple Directmedia Layer
^ SDL moving to GitHub - SDL Development - Simple Directmedia Layer
^ Simple DirectMedia Layer - Language Bindings
^ FAQUsingSDL - SDL Wiki