SDL2 x Emscripten x GL を利用してゲームでも作ろうかな。
と思い立って、アレコレしていたのですが、
今は、SDL2より、SDL1 の方が良いなぁーと思うに至ったり。 ついでだから、 Windows や Macようにもビルドできるようにしておきたいなぁ。
と考えたりしました。
なぜ、SDL1なの? ビルドで困ったことは?
などなど
あれこれ、解説します。
結論から
-
(SDL1|SDL2) & (MinGW|Mac|Emscripten) & OpenGL & C言語 のサンプルコードは以下におきました。
https://github.com/kyorohiro/doc_sdl2
ビルド環境付きです。 -
差異を吸収するLayerを作りました。
https://github.com/kyorohiro/capp
ifdef とか、参考までにどうぞ
TTF Image Mixer GL が使えます。
SDL1を使おう。なぜ?
詳細は以下にかきました。
http://kyorohiro.blogspot.jp/2017/09/which-use-sdl1-or-sdl2-at-emscripten.html
- SDL2 x Emscripten のサイズがでかい。 2MBくらいある。 SDL1 x Emscriptenなら、200kbくらいで済む
- SDL2系で SDL_mixerが思い通りに動作しなかった。(今は違うかも)
- SDL1系でも、タッチイベントが使える
という理由からです。サイズが小さく済むのが、個人的には大きなポイントでした。
デスクトップとEmscriptenの主な違い
emscriptenは、emscripten_set_main_loop_argで、イベントループを回す必要がある。
emscripten_set_main_loop_arg(main_loop, obj, 60, 1);
おもな違いは、そのくらい
SDL1 と SDL2 の違い
https://wiki.libsdl.org/MigrationGuide
のとおり
MINGW x SDL x GL を利用するには、自分でGLEWをビルドする必要がある
以下にまとめましたが、MINGWように GLEWを自分でビルドしてください
以下は、ビルドできるように修正済みのコード
https://github.com/kyorohiro/glew_mingw
PS
TTFとかですね、Imageとかの、合成方法とか、 差異が少しだけありました。
詳しくは、
https://github.com/kyorohiro/doc_sdl2
https://github.com/kyorohiro/capp
https://github.com/kyorohiro/glew_mingw
を参照してください。
(SDL1|SDL2) & (MinGW|Mac|Emscripten) & OpenGL & C言語
での、Image、OffScreen Image、Sound、Font、GL、等、基本的なサンプルコードをおきました。
ninja build つきです。
https://github.com/kyorohiro/capp/tree/master/examples
にも、同等の、サンプルコードがあります。
また、以下もどうぞ
https://kyorohiro.blogspot.jp/search/label/Emscripten
オワリ!!