SDL
開発元 | Sam Lantinga |
---|---|
最新版 |
2.30.3
/ 2024年5月2日[1] |
リポジトリ | |
プログラミング 言語 | C言語 |
対応OS | クロスプラットフォーム |
種別 | API |
ライセンス |
zlib License/ 1.2.15以前はGNU Lesser General Public License |
公式サイト | https://www.libsdl.org/ |
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が使用するAPI
[編集]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_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
- ^ SDL_WindowFlags - SDL Wiki
- ^ SDL_HINT_RENDER_DRIVER - SDL Wiki
関連項目
[編集]- allegro - マルチプラットフォーム開発用のライブラリ。
- openFrameworks
- Irrlicht Engine