個人的メモ: 描画関連の処理系・ライブラリ
あくまで個人的なメモみたいなものだよ。
需要?知らんな…
そんでもって多分どこかしら間違ってるよ。やったね。
まずDirectXってなにさ
化け物(Microsoft)が作った化け物。要はマッチポンプ
基本的にWindows向けで、それでなければXboxとか。これが地産地消ってやつか(違
要約すると、高品質な2D / 3D描画に加え、音声処理等のマルチメディア機能、その他入出力なんかをごっそり包括する巨大API。
このうちDirect3Dが3D描画のフレームワークで、OpenGLと主に競合するのはこの部分。
んじゃOpenGLはなんなの
純粋に描画機能のみをサポートするマルチプラットフォームAPI。
Javaはこれに頼りっきり。macOSもだいたいコレ。勿論Windowsでも動く。
そしてAndroid向けアプリはだいたいJavaで書かれてる訳で、つまりはこれもOpenGL。
でも、デスクトップ向けのOpenGLをそのまま使うのは無理があるので、モバイル向け実装のOpenGL ESが使われる。iOSもたいていコレ。
んでもってJavaScriptと組み合わせて使うWebGLというブラウザ向けの実装もある。やべーなこいつ。
結局どっちが良いの?
どっちでもいいれす(^q^)
強いて言うならば、Windowsオンリーでいいなら断然DirectX。まぁ仕方ないね。
でも、そもそもDirectXもOpenGLもそのままだと複雑すぎて扱いにくいので、普通はライブラリなんかを仲介する訳で。
そんで今の時代はもうワンソース / マルチプラットフォームが当たり前になってきている訳で。
つまり、DirectXだのOpenGLだのはそんなに気にしなくてもおk。動きゃいいんだ、動きゃ。
長い。3行で。
Windows = DirectX or OpenGL
macOS, Linux = OpenGL
iOS, Android = OpenGL ES
DXライブラリ
動作環境:
開発言語:
Windows版はDirectX、Android版はOpenGL ESのラッパー。
どちらかと言うと2D向け。でも3Dもイケる。
Windows版に限り、C#向けに変換したパッケージもある(ただし一部の機能が制限される)。
基本的な機能のみを揃えるローレベルな設計方針により、めちゃくちゃ処理速度が速い。
下手にゲームエンジンを使うよりかは断然速い。はず。
あと、PS4/PS Vita向けのソフトウェアも作れるらしい。
SDL
動作環境:
開発言語:
- C++
- and so on...
Direct3D / OpenGL (ES)のラッパー。WindowsでもOpenGLが使用できるらしく、アンチMicrosoft派の人でも大丈夫(ぇ
設計方針としてはDXライブラリと同じくローレベル。
また、音声や入出力なんかを扱う為の補助ライブラリもある。
数多くのバインドが存在。現状ではAda、C#、D、Go、Lua、OCaml、Pascal、Python、Rust向けにバインドされている。
あくまで公式ではないので更新具合に注意。
Hot Soup Processor
動作環境:
開発言語:
BASIC風のHSP言語を使い、簡単に、手軽にソフトを作る事のできるツール。
基本的にはWindowsのみ対応。
一通りの2D / 3D描画、音声処理等を内包する。
独自のIDEを持つが、そもそもの言語仕様含めて評判はあまり良くない。
でも、ネイティブのGUIを何故か簡単に書けてしまう。Win32APIも比較的簡単に叩ける。やろうと思えば何でもできる。
実行時にはHSP Dishというランタイム上で動作する。
このランタイムはLinux、iOS、Android、WebGL向けに移植されている為、各環境にて実行が可能。
また、Javaアプレットのプログラムに変換するHSPLetというコンバータも付属する。
Processing
動作環境:
開発言語:
- Processing (Java)
大御所。別名「Proce55ing」。
スケッチ感覚で手軽に書ける専用IDEが特徴。
Processing言語なるその実態は、あれこれ手を加えたJavaのライブラリ群。Javaって事はつまりOpenGLって訳だ。
JavaScript向けのバインドも存在する。
openFrameworks
動作環境:
開発言語:
OpenGL等の名だたる著名ライブラリ達のラッパー。
あくまで各ライブラリをグルー(接続)したり使いやすくする為のもの。
用途としてはアートや教育等、Processingに近いものがあるが、専用IDEがない分こちらの方が上級者向け。
マルチプラットフォームは一応できるけどかなり面倒。openFrameworks自体を自分でリビルドしないといけないらしく、ビルドターゲットを弄ったりあれこれ試してみたが、エラーの嵐でビルドできなかった。
Cinder
動作環境:
開発言語:
openFrameworksと同じ方向性のライブラリ。
でもCinderはどちらかというと芸術目的で使用される事が多いらしい。あとiOS対応。
ただ、日本語の情報が圧倒的に少ない。
Siv3D
動作環境:
開発言語:
なんでもアリのゲーム/アート向け多機能ライブラリ。
DXライブラリやopenFrameworks等の比較的ローレベルなラッパーとは異なり、少ないコードで色々作れるようにするというのがコンセプトらしい。
このライブラリ自体も比較的モダンな実装となっている(私見)。
日本語の情報も比較的豊富。
OpenFL
動作環境:
- Neko VM (Windows, macOS, Linux)
- Windows (DirectX)
- macOS
- Linux
- iOS
- Android
- BlackBerry
- Tizen
- WebGL
- Adobe AIR
- Adobe Flash
開発言語:
ほぼFlash。ActionScript風の言語仕様を持つHaxeを使う上、APIもFlashソックリ仕様。
でも、HTML5だのAIRだのを使った似非マルチプラットフォームではなく、きちんとネイティブコードで吐き出してくれるところがミソ。
んでもって、やっぱりAIR(要はFlash)でも書き出せる。しかもその状態で各OSネイティブのGUI使える。何でもアリかよ。
多分、WindowsではDirectX(場合に応じてOpenGL?)を、macOSやLinuxではOpenGLを用いている。また、内部的にSDLを使用しているらしい。
iOSではObjective-Cに、AndroidではJavaに変換しているとの事。
これにHaxeUIというライブラリ(Adobe Flexに心なしか似ている)のOpenFL対応版を組み合わせると、ネイティブのGUIだって作れちゃう。
2Dゲームに特化したHaxeFlixelもある。あのそこそこ有名な3DエンジンのAway3DもOpenFL版アリ。
ただ、日本語の情報が致命的に少ない。多分Cinderより少ない。
あと、基本的に日本語入力ができない。HaxeUI使えば、Flash、AIRあたりでできる。当然HTMLも。他は知らん。