2011-01-01から1年間の記事一覧

LuaJITがDirectXとともに使うと問答無用で落ちる

前々から凄い意味が分からなかったんですが、コンソールでエラー内容を見れるようにしてようやく分かりました。DirectX側でFPUの演算速度が落とされていたからだそうです。空想具現化プログラミング [Lua] Luaの数値型の精度の問題ここによると、FPUの演算速…

Boost.勉強会 #7 に行ってきました。発表してしまいました。

Boost.勉強会 #7 東京 - boostjpと言う訳で行ってきました。 発表してしまいました。 当初発表する予定なんて無かったんですが、そういえば ネタ帳 - boostjp に書かれていたり、1時間も余ってるし、Boost.Interprocess使ったことない人が多いそうだしでサプ…

DxLibからDirect3D9のデバイスを取得する

ものすごく面倒でしたがメモ。 LPDIRECT3DDEVICE9を取得したい 上のを読むと、ライブラリだけでは無理で、ソースファイルに添付されるヘッダがないと取得できないらしい。 というわけで、ダウンロードサイトからライブラリとソースコードを取ってくる。 DX…

MinGWのgccでboost.threadを使う私的メモ

MinGW使って色々やろうと思ったらboost.threadをスタティックリンクできなくて涙目になったのでメモ。 boost.threadのdetailの中に入ってるconfig.hppを弄る方法もあるようなのだが、普通にBOOST_THREAD_USE_LIBを定義しておけばビルドできるそうなのでg++の…

Luaから疑似クラスを受け取ってC++で実行する

前回の記事の疑似クラス版。 luabind::objectはもちろんテーブルを受け取れるので疑似クラスも扱えます。テーブル内の関数や変数を見つけるのはoperator[]で可能です。 #include <lua.hpp> #include <lualib.h> #include <luabind/luabind.hpp> int main() { ::lua_State* L = ::lua_open(); ::luaL_o</luabind/luabind.hpp></lualib.h></lua.hpp>…

Luaから無名関数を貰ってC++側で実行する

もしかしたらできるんじゃないの?と思ったらやはりできたのでメモしておきます。 Luaさんに処理の一部分を書いて貰いたい場合、名前が必要な通常の関数はめんどいです。その名前が無きゃ呼び出すのめんどそうです。後名前が干渉してどうこうとかありそうで…

Boost.ipcの有効利用(?)

というレベルではないですが Boost.Property_treeで暗号化したiniファイルを読んでみる - 名古屋313の日記 で暗号化を行うのに一度バッファを作って取るのが面倒だなあ、と思ったのでこれはBoost.ipcのメモリマップドファイルの出番ではないかと思いちょ…

Boost.勉強会# 4に行ってきました

先週の土曜日の話だからまだ大丈夫ですよね。という訳で行ってきました。結構早めについたのでガラガラかなーと思ったらid:nyaocatさんがすでに居ました。早い。 まあ確かにがらがらでしたよね。10時なってましたけどまず発表者の大半が居ない…だと?でもTwi…

Cinderやばい(複数の意味で)

boost.ネタ帳を見ていたらCinderというのがあって気になってググったら結構面白そうなアーティスティック制作系のライブラリのようです。インタラクティブ性も含んでいたりします。入門は以下。なんですがこれMacの話です。 クリエイティブなC++ライブラリ "…

XAPO用の自作クラスは別にCLSIDは不要と言えば不要にできる

XAPOクラスにはCLSID(COMクラスID)が必要です。なのでVisualStudioの機能が使える人はそれで生成してVS用の特殊なプロパティを書いてCLSIDとの対応付けをして…と面倒この上作業を必要とします。がしかし、これは実は必要ないかもしれません。 というのもCLSI…

FLACビルド方法メモ

こっちは今までやったことないので今のうちに記録しておく。 FLACのビルドにはNASMが必要です。これは The Netwide Assembler: NASM で取ってきてもらいます。VisualStudioではどうもnasm.exeでなくnasmw.exeを使うとするので*1コピーしてnasmw.exeを作って…

Ogg, Vorbisのビルド方法メモ

毎回ビルドするときに調べるのがしんどいので、メモ書きをしておきます。Xiph.org: Downloads からlibogg-とlibvorbis-と書かれたファイルを保存して解凍します。 この名前はから - をすべて切り取り、liboggとlibvorbisというフォルダ名にします。 後はVisu…

tag_functionのバグ

luabind/tag_function.hppが内部でイテレーションでNとNPLUS1をdefineしています(75行目、76行目)が、undefされてません。85行目あたりに以下のコードを埋めておく。 // luabind/tag_function.hpp ... #undef NPLUS1 #undef N

Luabind備忘録

現在Luabindを用いて部のゲームプログラムにLuaを持ち込んでいますが、クラスをバインドすることも多いです。で、クラスのメンバ関数のバインドコードがオーバーロードされているとき非常にめんどくさくて投げたくなるのは仕方がない。 struct drawable { vo…

Managed Memory Segmentsで動的多態する場合の留意事項

boost.ipcのManaged Memory Segmentsで動的多態を演じたい場合、destroy(_ptr)を呼び出す際、作成時の型を指定する必要があります。つまり抽象クラスの型を指定して、抽象クラスのポインタを渡して、削除することはできません。 namespace ipc = boost::inte…

destroy_ptrでハマる

いや、まさかこうなるとは思ってなかったのでメモ。Managed Memory Segmentsはconstructしたオブジェクトをdestroyする必要があります。これはconstruct方法によっていろいろ選べます。例えばnamed instanceとして作成した場合、destroyを使って名前を指定し…

Managed Memory Segments 小ネタ幾つか

今日は特にネタがなかったので、Managed Memory Segmentsが提供してる機能をいくつか書いておきます。とりあえずManaged Memory Segments上のお話なので前提条件を書きます。変数名はmm_segmentsで、オブジェクトは自動で削除されます。ちなみに、ドキュメン…

Boost.interprocess 解説&備忘録

ただの記事リストです。01:boost.interprocessさん凄いです - krustf の雑記 02:しばらくboost.interprocessネタで書いていこう。 - krustf の雑記 03: 04:vectorstreamの話 - krustf の雑記 05:bufferstreamの話 - krustf の雑記 06:STLもmanaged上な…

いやいやManaged Heap Memoryの方が

Managed Heap MemoryがBoost.interprocess Document P.90に書いてあります。これはstatic buffer領域を必要とせず、予めヒープ上のメモリを確保して利用する形だそうです。使い方はManaged Heap Memoryと同じで構築方法が異なります。 例えば、自前でヒープ…

Managed External Bufferは便利かも?

久しぶりに更新。Boost.interprocessの話です。またもやドキュメントパラパラ見てたら結構使えそうなやつが出てきたのでメモ。 Managed External Buffer "様々な状況でSimpleなオブジェクト、STLと同じようなコンテナや文字列、 あとは何かしらのバッファが…

XAPOFXで出来合いのエフェクトを使う

たまにはXAudio2とその関係のお話でもします。 XAPO? XAPOFX? というか今までXAPOが何か、という話を真面目にしてなかったような気がするのでそこから話します。XAPOとはXAudio2と連携して利用するオーディオ処理オブジェクトを作成する手段を提供するAPI…

multi_indexなども使えて便利

ついつい見落としてましたが、interprocessはmulti_indexなどのinterprocess外ですがBoostのライブラリとして提供している一部のコンテナもmanaged memory segmentsを使って作成できるようです。ドキュメントに書いてあるのはmulti_indexとunordered_mapの2…

wxWidgetsインストールメモ(Windows, MSVC)

wxWidgetsというクロスプラットフォームなウィジェット・ツールキットを前に聞いてインストールすらしてなかったのでインストールのメモ。といってもまだ調べて切れてないのですが…。 公式はwxWidgetsここで、Downloadsから肝心なソースは引っ張ってこれます…

プロセス間共有用のnamed mutex

interprocessには"named mutex"という名前付きMutex Objectを作成して複数のプロセス間で排他制御を行える機構があります。recursiveなMutexなどありますが、多分interprocessとして特徴的な機能だと思いますので紹介。作り方と最終的な削除方法が面倒ですが…

STLもmanaged上ならば使用可能

[注意] この記事は間違っている可能性が高いですできるのかなーと思っていたんですが、managed上であればsegment_managerを使用したアロケータを作成すればSTLコンテナをそのまま利用できるようです。(じゃあなんで同じようなコンテナがboost.interprocess内…

ライブラリの名前を変更してauto_link.hppを使う

Boost.Buildで名前を変更する方法がよくわからなかったのでいろいろ調べてたらなんとなく理解できたのでメモ。プロジェクトの設定でtagプロパティに名前を設定するruleを与えて、そのrule上で名前を返却すれば良いようです。commonモジュールを使って生成し…