.NET Framework4.0からメモリマップドファイルがサポートされたみたいですが、実務で4.0ってまだあまり使われてないよね。多分。
で、実際仕事で.NET Framework2.0でメモリマップドファイル使う事になって、ちょっと手こずったのでメモ。
言語はVBだけど、C#でも同じようにできます。
.NET Framework4.0からメモリマップドファイルがサポートされたみたいですが、実務で4.0ってまだあまり使われてないよね。多分。
で、実際仕事で.NET Framework2.0でメモリマップドファイル使う事になって、ちょっと手こずったのでメモ。
言語はVBだけど、C#でも同じようにできます。
働けど働けど:というわけで
Selene作者さんのブログですが、
とりあえずSeleneに関してはいいとして現状で放置気味のArtemisを何とかしてみたいと思います。
2D特化のライブラリという位置づけなのは変わらずですがDXライブラリを見習ってもうちょっといじりたいなと。
個人的な志向というか嗜好というか、DXライブラリや他のゲームライブラリよりSeleneやArtemisのほうが好きなんですよね。
でも前のエントリで書いたように絶望しちゃって、DXライブラリを中核にフレームワーク組み直してたんだけど・・・
そっかー。Artemisなんとかしてくれるのかー。
様子見様子見。
ゲーム作成ではよく、Sin/Cos関数はセットで頻繁に使うわけですが、
前のエントリーで紹介したC++プログラミング日記様のとこに、参照テーブルによるサイン・コサインの高速化と、FPU命令によるサインとコサインの同時取得の2エントリーがありまして、んじゃどっちが速いのよ?っということで比較してみることにした。
上記2つに加えて、標準(CRT)のsin/cosとSeleneから拝借してきたFastSin/FastCosも比較対象に入れてみます。
なんとなくSSE2有りと無しでも比較してみました。
前にやったfloatとdoubleの演算速度比較エントリの訂正エントリになります。
たまたま見つけたC++プログラミング日記様のこのエントリ
「double型はfloat型より高速」といった説をたま見かけますが実際のところは同じ命令で処理されているため計算速度に違いはありません。ただし浮動小数点モデル/fp:preciseを使用した場合は単精度を精密に再現するため著しくパフォーマンスが低下します。
この/fp:preciseがVSではデフォルトで選択されるので、floatが遅くなっている、ということだそうです。
早速私も試してみた。
Selene & Artemis作者さんのブログなんだけど、
2D用ゲームライブラリとして、特にArtemisには期待しつつ、まったり見守ってたら・・・
2D用として作ってあるArtemisに関しては機能的には事足りてるのでコレも何か大きな理由でもない限り更新していく予定はありません。
事足りてるんだ・・・orz
以前、このエントリーで書いたように、リソースのメモリからのロードやパックファイルに対応しないままで終了なのですね・・・。
っていか、ホントに対応してないの?SampleMediaFontにパックファイルあるんだけど・・・サンプルソースでは使われてないけど。
なんだかすごく残念な感じです。
せめて関数リファレンスだけでも書いて欲しいなぁ。
いっそ一から全部自分でゲーム用ライブラリ作るか・・・?なんてことが頭をよぎったりするけど、正直そこまで意欲はないし。
でも勉強にはなるのかなぁ。
はぁ・・・。私の中でArtemis終わった感じ。
こんなとこで愚痴っても仕方ないのはわかってるけど。
色々諦めてDXライブラリ一本に絞ったほうが幸せになれるのかなぁ。
んで、
まぁそんなわけでして、バレバレかもしれませんが、既に半年くらい前からやってます。
完全に中上級向けで気合入ったやつを。
きっとSeleneより高度なエフェクトやらなにやらが使える、DirectX10以上対応のすげぇやつなんだと思います。
が、現状Seleneを持て余してる私にはきっと使うことの出来ないものなんでしょうね。
新しいライブラリ作るなら、SeleneのDirectX10/11復活させなくてもよかったような・・・