「 2008年09月 」一覧

インターフェース変更


DirectXのヘッダを見ていて気付いたこと。
同名のIIDで、値だけ違うってまずいんじゃないだろうか。

DEFINE_GUID(IID_ID3DXEffect,
0xd165ccb1, 0x62b0, 0x4a33, 0xb3, 0xfa, 0xa9, 0x23, 0x0, 0x30, 0x5a, 0x11);

DEFINE_GUID(IID_ID3DXEffect,
0xf6ceb4b3, 0x4e4c, 0x40dd, 0xb8, 0x83, 0x8d, 0x8d, 0xe5, 0xea, 0xc, 0xd5);

確かにメソッドの数が違うから新しいIIDにするのは納得がいくのだけども、こんなことして、平気なのかな?と思う。もしや、こういう強引なことを出来るようになったのも、対応するd3dx_**.dllが分かっているから、なのか?

だれか情報知っていたら教えて欲しいです。

 


D3DXCreateEffectについて – CompileEffect


マクロで有効・無効のブロックを切り替えるにはどうしたらいいんだーということで調べてました。
ピクセルシェーダーコードでは、以下のようにして挙動をチェックしていました。

[code lang=”cpp”]
#ifdef _TEST_
return float4(1,1,1,1);
#else
return float4(0,0,1,1);
#endif
[/code]

これをEffectでやるのにネックだったのは、マクロ定義変数の部分でした。

解決策はこう。

[code lang=”cpp”]
D3DXMACRO d3dxMacros[2] = { //マクロ マクロ名
"_TEST_","", <– ここで定義する部分を設定して
0, 0 <– ここで終端を示すようにヌルターミネートしておく
};
[/code]

通りでマクロの設定長を示す引数がないわけだ。

探してみてもこの辺でつまずく人はいないのか、記述が見あたらず。
また、ほとんどの場合このマクロ設定部分NULLにしちゃうし、使う状況ってないのかなぁ。

自分では多用していこうと思っていますが。


DirectX吸収レイヤー


現在、次の作品へ向けて作業中。リフレクションの部分をとりあえず切り上げて、次はDirectXの吸収レイヤーを作成開始。

とりあえず、デバイスロスト自動復帰とデバッグレイヤー相当品を入れるべく作成中。DirectX10なら普通にデバッグレイヤーあるらしいけど、DirectX9には使い勝手のよいものがないし。
きっと、このレイヤー取り替えるだけで DirectX9, 10, 11 と対応アプリ切り替えられそうな予感。
そろそろDX10いっておかないと、次DirectX11のときに泣きを見そう?!

 

ドラマ感想

漫画喫茶都市伝説 呪いのマンナさん をみた。
うーん、最後まで微妙だった。謎が全て明かされていないし、中途半端。
これは出演者を鑑賞するためのドラマでしょうか。

絶対彼氏

ようやく今年1月のやつの2つめ。もう夏も越したのに、こんな感じです。今のところ、割とおもしろい。