とらきす の ぐだログ

とらきすのぐだログ

ぐだぐだとなんかするブログ。

個人的メモ: 描画関連の処理系・ライブラリ

あくまで個人的なメモみたいなものだよ。
需要?知らんな…

そんでもって多分どこかしら間違ってるよ。やったね。


まず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。まぁ仕方ないね。

でも、そもそもDirectXOpenGLもそのままだと複雑すぎて扱いにくいので、普通はライブラリなんかを仲介する訳で。
そんで今の時代はもうワンソース / マルチプラットフォームが当たり前になってきている訳で。

つまり、DirectXだのOpenGLだのはそんなに気にしなくてもおk。動きゃいいんだ、動きゃ。

長い。3行で。

Windows = DirectX or OpenGL
macOS, Linux = OpenGL
iOS, Android = OpenGL ES


DXライブラリ

動作環境:

開発言語:

Windows版はDirectXAndroid版は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、LuaOCamlPascalPython、Rust向けにバインドされている。
あくまで公式ではないので更新具合に注意。


Hot Soup Processor

動作環境:

開発言語:

BASIC風のHSP言語を使い、簡単に、手軽にソフトを作る事のできるツール。
基本的にはWindowsのみ対応。
一通りの2D / 3D描画、音声処理等を内包する。
独自のIDEを持つが、そもそもの言語仕様含めて評判はあまり良くない。
でも、ネイティブのGUIを何故か簡単に書けてしまう。Win32APIも比較的簡単に叩ける。やろうと思えば何でもできる。

実行時にはHSP Dishというランタイム上で動作する。
このランタイムはLinuxiOSAndroidWebGL向けに移植されている為、各環境にて実行が可能。

また、Javaアプレットのプログラムに変換するHSPLetというコンバータも付属する。


Processing

動作環境:

開発言語:

大御所。別名「Proce55ing」。
スケッチ感覚で手軽に書ける専用IDEが特徴。
Processing言語なるその実態は、あれこれ手を加えたJavaのライブラリ群。Javaって事はつまりOpenGLって訳だ。

JavaScript向けのバインドも存在する。


openFrameworks

動作環境:

開発言語:

OpenGL等の名だたる著名ライブラリ達のラッパー。
あくまで各ライブラリをグルー(接続)したり使いやすくする為のもの。
用途としてはアートや教育等、Processingに近いものがあるが、専用IDEがない分こちらの方が上級者向け。

マルチプラットフォームは一応できるけどかなり面倒。openFrameworks自体を自分でリビルドしないといけないらしく、ビルドターゲットを弄ったりあれこれ試してみたが、エラーの嵐でビルドできなかった。


Cinder

動作環境:

開発言語:

openFrameworksと同じ方向性のライブラリ。
でもCinderはどちらかというと芸術目的で使用される事が多いらしい。あとiOS対応。

ただ、日本語の情報が圧倒的に少ない。


Siv3D

動作環境:

開発言語:

なんでもアリのゲーム/アート向け多機能ライブラリ。
DXライブラリやopenFrameworks等の比較的ローレベルなラッパーとは異なり、少ないコードで色々作れるようにするというのがコンセプトらしい。
このライブラリ自体も比較的モダンな実装となっている(私見)。
日本語の情報も比較的豊富。


OpenFL

動作環境:

開発言語:

ほぼFlashActionScript風の言語仕様を持つHaxeを使う上、APIFlashソックリ仕様。
でも、HTML5だのAIRだのを使った似非マルチプラットフォームではなく、きちんとネイティブコードで吐き出してくれるところがミソ。
んでもって、やっぱりAIR(要はFlash)でも書き出せる。しかもその状態で各OSネイティブのGUI使える。何でもアリかよ。

多分、WindowsではDirectX(場合に応じてOpenGL?)を、macOSLinuxではOpenGLを用いている。また、内部的にSDLを使用しているらしい。
iOSではObjective-Cに、AndroidではJavaに変換しているとの事。

これにHaxeUIというライブラリ(Adobe Flexに心なしか似ている)のOpenFL対応版を組み合わせると、ネイティブのGUIだって作れちゃう。
2Dゲームに特化したHaxeFlixelもある。あのそこそこ有名な3DエンジンのAway3DもOpenFL版アリ。

ただ、日本語の情報が致命的に少ない。多分Cinderより少ない。
あと、基本的に日本語入力ができない。HaxeUI使えば、FlashAIRあたりでできる。当然HTMLも。他は知らん。