Autodeskが・・・


Avidを買収したとか。となると全てが1社の製品ですか…。凄い寡占状態に。

  • Maya
  • 3DSMAX
  • SoftImageXSI

 

今さらだけど、ラストフレンズを見始めました。あと、あかね色に染まる坂とかも。
大人しい平野綾ってなんか新鮮・・・

 


インターフェース変更


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つめ。もう夏も越したのに、こんな感じです。今のところ、割とおもしろい。

 


コミケいってきた


とりあえず、HeartyBreakers完売。公式Web見つからないと話があったので、こちらから貼ってみることにします。

http://codingcafe.hp.infoseek.co.jp/index.html

 

ずっと座っていただけで、ノートPCもってムービー流していただけ。たったそれだけのために今日、がんばった。そして、周りの人々はなぜかドタキャンっぽく・・・。それみて、あぁこれはいけない、と実感。こうなってはダメですね。

Googleで検索したら、CodingCafe のページ(移転後)のが引っかかる。一応、作品からは検索可能なようだ。今丼さんもきっとこれで安心してくれるに違いない。

 


BDドライブかった


とうとう念願の記録型BDドライブを購入&取り付けました。
初焼きをしてみましたけど、10Gオーバーでもディスクの半分くらいまでしか色が変わらなかったので、まだまだ余裕を実感させてくれます。25Gのメディアでも余裕を感じるし、50Gならなおいっそう。今後もしばらくは安心できそうです。

しかし、焼きにはそこそこ時間がかかりました。2xだったのとベリファイ入れたのがダメだったのか。約1時間ほど取られてしまった。次は、25GBの6xで出来るモノならチャレンジしたいところです。

 


動かないコード


最近は動かないコードばかり書いてます。コンパイルを通してニヤリ、として終了です。
コンパイル時にすでに判定や計算が終わっている、とか、プリプロセッサ終了時に状態確定とか、そんなことばっかりやってました。

ふと、覗いてみるとどうやらBoostのPreprocessorが分野的に近い。そして、templateで色々とごちゃごちゃやったことは、メタプログラミング、という分野にいるっぽいことがわかりました。

こうやってできたコード、少なくとも人に読ませられるコードじゃないなぁと実感してます。数ヶ月後の自分でも怪しい・・・。

 


昨日の答え。


意外にも日を変えて再度悩んでみると思いつくものである。
とりあえず下記コードでやりたいことはできた。
しかし、T,Sなど1文字の型引数にしておくと、次みたときに相当わからないなぁ…

しかしこのコード、少なくとも今年一番イケてると自負してます

 


(no title)


メンバ変数で配列で…

メンバ変数のポインタを利用して、型情報取得できないか色々と思案中。メンバ変数のポインタ型をテンプレートの型として受け取るまではいけるものの、その型からさらに固定配列だった場合には長さを知りたい。

うーん、できるんだろうか…。

[code lang=”cpp”]
class A {
int a[100];
int b;
};
[/code]

このようなクラスがあって、 &A::a, &A::b という状態からその型と配列情報がテンプレートで展開できれば、目的のことが達成できるのに…。しばし悩んでみます。

 


OS再インストール中


いろいろとやることがあって大変な時期に、OSから再インストール中・・・。
もちろん、Vista x64版で。しかしながら色々とトラブルに見舞われ。

トラブルの点を列挙すると

  • MSDNのOSアクティベーションが上限超えた…。
  • DaemonToolsがインストールでこける

前者はもうしょうがないので、放置。そして、DaemonToolsの件はどうやらウィルスバスター2008のせい。
リアルタイムの検索を切ってみたら、それだけでインストールは成功しました。きっとほかの誰かも同じようにできなくなっているのじゃないかと思います。

MSDNのアクティベーションが上限超えたのはどうしようか。次の更新時期で更新せず、新規で契約しちゃおうかと考え中です。