DirectXのテクスチャについて

メモリ管理やUSAGEの組み合わせで気になったので調査.

生成時フラグ

D3DPOOL D3DUSAGE 結果
Default 0 OK
Default WRITEONLY NG
Default DYNAMIC OK
Managed DYNAMIC NG
SystemMem DYNAMIC OK
Default DYNAMIC RENDERTARGET OK
Default RENDERTARGET OK

ロック時フラグ

タイプ ロック手法 結果
Default&Dynamic&&RenderTarget 0 NG
Default&RenderTarget 0 NG
Default&RenderTarget D3DLOCK_READONLY NG
Default&Dynamic&&RenderTarget D3DLOCK_DISCARD NG
Default&RenderTarget D3DLOCK_DISCARD NG
Default&Dynamic D3DLOCK_READONLY OK
Default&Dynamic D3DLOCK_DISCARD OK
SystemMem&Dynamic D3DLOCK_READONLY OK
SystemMem&Dynamic D3DLOCK_DISCARD OK

感想

意外だったのは SystemMemでDynamicタイプを作れること。

それでもSystemMemでRenderTargetは無理でしたが(当たり前)。


分厚い書籍

一部で話題の「ゲームプログラマになる前に覚えておきたい技術」を購入。
およそ1.6kgの結構重い本です。懐に入れておいたら、銃弾も防御できそうな…。
内容は、C++によるプログラムは組めるけど、ゲームプログラムを作るにはどうしようかと悩んでいる人向けだと思います。自分としてはそこまで難しいとは思えないし、ゲームプログラマーを目指すんであれば、前半くらいは知っておいて欲しい内容だと思います。というよりこれ完全に理解できていれば、ゲーム業界へ飛び込んでも安心かと。

そんなわけで、この本の別名を考えてみました。

(ゲームプログラマーの)黒本

通称、黒本といえばこれをさすようなそんな定番へとなってくれると嬉しいです。

注意事項

ちなみに某所の新人研修でとありますが、実際にはその研修を受けたのは数人です。プログラマが全員この新人研修を受けているわけではないです。

自分が勉強した頃にこの本があったら凄く良かったのにと思わずにはいられません。

ゲームを楽しく、凄く立派に作るための、また楽して作るための、というコンセプトではないので、基礎をしっかり勉強したい人向けです。



結婚式へ行ってきました

友人の結婚式へ帰省

高校のときの友人が結婚するので帰省してきました。そして10年ぶりくらいに集まった友人達。楽しかったです。
”’新郎・新婦ともに自分の大切な友人なので、これからも末永くお幸せに。”’

以前では、(ばーくが)やらかさなかった甘えている場面を見れたことが、なんだか一番収穫だったような気がします。

となると次はだれが続くのか!?という話になりますよね。

  • 自分
  • 後輩A(ライバル認定)
  • 後輩B

ということなんですが、だれであってもいいかなと。楽しみです。
めでたいことは数多く起こってくれていいですし。

 


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で色々とごちゃごちゃやったことは、メタプログラミング、という分野にいるっぽいことがわかりました。

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