背景 OpenGLなソースをEmscriptenでJavaScriptに変換できることは分かったのだが、 OpenGLなソースだとテクスチャーをファイルとして読み込むようなケースが多々ある、 Emscriptenでこういったファイルの読み込みも可能なような記述があるが、 具体的な方法が英語力の低さから分からずにいた。 そんな折、はてなの人力検索ですばらしい質問と回答を発見して、これを手がかりに C++でファイルを読み込むプログラムをEmscriptenでJavaScriptに変換することが出来た。 前提 EmscriptenでJavaScriptに変換された本体のプログラムのファイルアクセスは仮想ファイルシステムを介して行われる。 この為、本体のプログラムを実行する前に、この仮想ファイルシステムに必要なファイルやフォルダの登録が必要となる模様。 emscriptenのページでは自動でやって
DxPortLib is an SDL2 based portability library that is intended to be as interface compatible as possible with some freely available Japanese game development libraries. Originally developed for compatibility with the DxLib game development library, but now also has partial support for Luna. DxLib's home page: http://homepage2.nifty.com/natupaji/DxLib/ DxPortLib is designed to work with SDL2/OpenG
hello int main() { puts("hello"); } 生成されたコード // EMSCRIPTEN_START_FUNCS function _main() { var label = 0; var $1=_puts(((8)|0)); return 0; } Module["_main"] = _main; // EMSCRIPTEN_END_FUNCS 8がだだっぴろいメモリへのインデックスなのはわかるけど、それはどこで定義されてるのかな…と hello で検索しても見つからない。 104 で検索すると見つかった。 STATIC_BASE = 8; STATICTOP = STATIC_BASE + 8; /* memory initializer */ allocate([104,101,108,108,111,0,0,0], "i8", ALLOC_NONE, R
; ModuleID = 'hello.c' target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f80:128:128-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32" target triple = "i686-w64-mingw32" @str = private unnamed_addr constant [25 x i8] c"Hello, Emscripten World!\00" define i32 @main(i32 %argc, i8** nocapture %argv) nounwind { %puts = tail call i32 @puts(i8* getele
3月10 Zopfli を Emscripten で移植した際の備忘録 Emscripten で Zopfli を移植した際のメモを残します。 思ったより簡単に使えましたが、知らないとハマることも結構多かったです。 導入 自分の環境(Mac)では以下のような感じでやれば OK でした。この辺りは情報が豊富なので適当です。 JS Engine は NodeJS だけで良いっぽいです 必要な環境は homebrew 環境なら brew install llvm だけ? あとは emscripten を clone するだけ clang, clang++ の位置が llvm-link と違う場合はシンボリックリンクを張るなどして合わせる 使い方 C プログラムから JS へ変換 $ emcc *.c -o hoge.js ライブラリの場合 通常だとリンク時最適化(LTO)によりエントリポイント(
背景 WindowsでCビルド環境が入っていない環境下でnode.jsでSMTPを受けるサーバーを書いていた。 世界で活躍するエンジニアと違い、自分は日本語を含むメールしか扱わないため、 iso-2022-jpでエンコードされている文字コードをUTF-8にしてコンソールに表示する 必要があった。 node.js向けのiconvパッケージがいくつか見るかるも、 パフォーマンス重視しているようで、libiconvのCでのバインドだった。 この為、使えなかった。 sjisをutf-8に変換するjsピュア実装はあるも、JISをUTF-8にする実装は 見つけることが出来なかった。 Emscriptenでやってみるか! 別環境でlibiconvをemscriptenでビルド テスト用のSMPTサーバーを動かす環境はビルドツールの類がないので、 cloud9のIDEのターミナル越しに某所のOSXマシンに
おはようございます。次男が数歩あるいたkjunichiです。 --pre-loadオプションを使う ソースコード上の指定したファイル名でアップロード出来なので、以下のようにpre.jsを用意して 対象のファイルをjsdo.itにアップロード後、提示されたファイル名をpre.jsに埋め込む。 Module['preRun'] = function () { FS.createPreloadedFile( "/", "pdcfont.bmp", "/assets/g/m/e/F/gmeFE", true, false); }; Emscriptenで生成されたファイルはでかい Emscriptenで生成されたファイルは数万行となり、 コピペでjsdo.itに貼り付けると、重くてまともに扱えないので、 これも、ファイルとしてjsdo.itにあげておき、srcriptタグで 読み込むことが出来る。
JavaScript Advent Calendar 2011 (フレームワークコース) の25日目で、「導入編」の続きです。 emcc を使う 「導入編」で emmaken.py というツールを使うと間単に Emscripten を使えると書きましたが、「導入編」を書いた後で Emscripten がアップデートされ、emcc というツールが登場しました。例えば hello.c を変換する場合は、ターミナルから以下のように呼び出します。 $ emcc hello.c emmaken.py ではこの後に Emscripten 本体を呼び出す必要がありましたが、それが統合され1ステップで完結するようになりました。 emcc の導入により emmaken.py の使用は非推奨となりました。 Javascript プログラムと連携する Emscripten の使用シーンとしては、変換元のCプログ
input extern void puts(const char *str); int main() { puts("hello, world!"); return 0; } console Limitations C preprocessor is not hooked up. If you want to also execute the code, use this LLVM IR runner or one of the many CPU emulators out there in JS. This is a quick hack, build size and perf have not been optimized yet.
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く