emscripten


これは何か?

C++ を javascript に変換してCanvasやWebGLにできるコンバータ

・STL使える。
・std::shared_ptr使える。
・glutやglfwが使える。glfwは2.78で動作確認。3はまだ非対応。
・SDLも使える。
・恐るべきことに、bulletとかQtも一応動く
・boost怪しい。使わないほうが良い。

・thread 使えないと思ったほうが良い。
  std::thread、pthread 無理。
  一応emscriptenの独自のメソッドを使うと、共有ステートがないワーカースレッドだけ使えるらしい。


ビルドはVS2010で出来る

注意事項
・Pythonは32bit版を使う。
・node.jsは32bit版を使う。

困ったときの設定確認方法
・python tests/runner.py
をコマンドプロンプトで実行するとエラーがでる。

開発の流れ
・新規空プロジェクト作成→インストールが無事終わっていたらWin32/x64選ぶところでEmscriptenが追加できる。


いろいろやってわかったこと
・構成プロパティの Emcc Linkerの Optimization を Relooper + Closure Compiler (-O2) にしないと、
  C++およびSTLがまともに使えない。ifdefもおかしなことになる。あと".c"ファイルじゃないと動かなくなったりする。
構成プロパティの Emcc LinkerのAdditional Library Directoriesは不要
構成プロパティの Clang C/C++のAdditional Include Directoriesは不要
 → emscriptenが公式で対応していないライブラリを使う場合は必要っぽい。
  → glm を使ってみたところ必要だった。
・GLFWでシェーダを使うときは、GLEWなどを使うと思うが、emscriptenではgl2.hを使う

#ifdef WITH_EMSCRIPTEN
#include <GLES2/gl2.h>
#include <EGL/egl.h>
#else
#include <GL/glew.h>
#endif


開発初期段階の自作コードをwebgl化に成功






Comments