07/11/15 19:15:13
>>892
なかなか初心者には分からないものです。
>>893
なるほど、非常に参考になります。
>>894-895
そういうことになりますかね。xファイルをロードする関数があるので、
高さマップなどにも専用の関数がある、もしくは似たようなことが出来る
と思ってました。
>>896
バンプマッピングはあくまでも見た目だけで、実際に他のメッシュから
レイを飛ばして高さを取得したい場合などには不向きと調べた結果にありました。
それと地形作成専用のツールの出力が高さマップだったので。
逆にバンプマップ以外、高さマップ無しで効率よく広大な地形を生成する
手法が存在するのでしょうか?
>>898
実は質問する前にそのページを参考にして作ってみたのですが、原理やC#自体
よく理解していないなかったので手詰まり状態でした。
アドバイスのおかげでそのソースコードの意味も今分かりました。
とりあえずゴリゴリ頂点データを作成する関数をコーディングしてみます。
ありがとうございました。
900:デフォルトの名無しさん
07/11/15 21:53:13
やってることが、どう見てもhight fieldだ。
ハイトフィールド、hight fieldでググると色々出てくるよ。
使い古された手法だから、結構ソースはあるはず
901:デフォルトの名無しさん
07/11/15 22:36:14
助言をお願いします。
テクスチャを動的に生成するため、
D3DXCreateTexture(pD3DDevice, iWidth, iHeight, 0, 0, D3DFMT_A8L8 ,D3DPOOL_MANAGED, &pTexture);
で作成してたテクスチャを
pTexture->LockRect(0, &stRect, NULL, D3DLOCK_DISCARD);
とロックして書き換えていたのですが、
ふと、DirextX Control Panelで、Debug Runtimeに変更したとたん、
エラーコードD3DERR_INVALIDCALLが返ってくるようになりました。
Retail Runtimeでは動くので最終的には問題ないですが、
Debug Runtimeで動かないのが気になります。
何かご指摘の点があればよろしくお願いします。
902:デフォルトの名無しさん
07/11/15 22:40:06
>>901
デバッグ出力に何か情報でてないの?
903:デフォルトの名無しさん
07/11/15 23:10:23
パラメータを見直した?
D3DXCreateTexture、LockRectの箇所でデバッガで止めて、引数の値を精査した?
904:901
07/11/15 23:37:31
レスありがとうございます。
デバッグ出力は何も出てきていません。
パラメータは例で示した感じです。
動作自体はRetail Runtimeで目的通りに動作しているので、
何が間違っているのか・・・?
905:デフォルトの名無しさん
07/11/16 00:51:43
D3DLOCK_DISCARDは、動的テクスチャのみ有効なフラグで
動的テクスチャの作成にはD3DPOOOL_MANAGEDは使用できないと
ヘルプにあるが。また、D3DUSAGE_DYNAMICを指定してないし。
つーか、デバッグメッセージは出てるだろ、メッセージレベルを上げろよ。
906:デフォルトの名無しさん
07/11/16 01:16:52
>>904
D3DERR_INVALIDCALLが返ってきて、デバッグ出力に何も出ないなんてことは
最近のSDKでは起こらないと思うんだが。
>>901のコードを手元で試したらちゃんとメッセージが出たんだがね
Direct3D9: (ERROR) :D3DLOCK_DISCARD is allowed only with dynamic textures
907:デフォルトの名無しさん
07/11/16 01:18:10
>>906の言うとおりならSDKが古いんじゃないの?
908:デフォルトの名無しさん
07/11/16 01:34:37
>>906のメッセージはかなり昔のSDKでも出る
恐らくは>>905の言うとおりデバッグ出力レベルを上げてないだけかと
Retailランタイムでは動作するってのが分からんけど
909:デフォルトの名無しさん
07/11/16 01:40:05
Retailで動くってのは無効なフラグをいちいちチェックしたりせずに無視してるだけなんじゃないかなたぶん
910:デフォルトの名無しさん
07/11/16 01:52:49
DebugとRetailで、関数からの戻り値(HRESULT)が変わることもあるのかな?
>>901でLockRectが失敗すると、当然D3DLOCKED_RECTの値も無効な訳で、
そのまま処理進めると間違いなくAccess Violationな気が…
911:デフォルトの名無しさん
07/11/16 01:59:38
とりあえず、仕様通りに書き直せばいいんでね?原因なんて暇人に調べさせておけ・・・
ってまさか、これは調べさせる釣りなのか?!
912:デフォルトの名無しさん
07/11/16 02:12:59
これはまたまんまと
913:901
07/11/16 02:43:16
レスありがとうございます。
D3DPOOL_MANAGEDで作成してること事態が問題でした。
おかげさまで、
D3DXCreateTexture(pD3DDevice, iWidth, iHeight, 0, D3DUSAGE_DYNAMIC, D3DFMT_A8L8 ,D3DPOOL_DEFAULT, &pTexture);
と修正することにより、Debug Runtimeでもエラー無く動くようになりました。
ただ、Debug Output Levelを最大にしても、エラーメッセージが何も出でないのは気になりますが・・・。
ちなみに、SDKはJune 2007をVistaで使用しています。
914:デフォルトの名無しさん
07/11/16 07:10:11
デバッグメッセージの見方を知らないのかな?
915:デフォルトの名無しさん
07/11/16 08:53:14
VC++8Expressだと出力ウィンドウにはネイティブのデバッグメッセージは
表示されないという罠があったりなかったり。
916:デフォルトの名無しさん
07/11/16 11:19:26
質問者は、自分の環境とか使ってるDirectX SDKのバージョンを書かないけど、
このスレではそれがデフォなの?
917:デフォルトの名無しさん
07/11/16 12:13:20
SDKはみんな2004Octを使ってるからいちいち書かなくてもいいだろ
918:901
07/11/16 12:29:42
VC++2005EEだと出力ウィンドウに出てました・・・orz
主にコンソールで作業してるもので・・・
お騒がせしました。
919:デフォルトの名無しさん
07/11/16 13:46:44
DirectX9で2Dゲームを作っていて
SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
の拡大縮小フィルタを設定しているのですが、
等倍や縮小描画をすると異常にぼやけてしまいます
何故かMINFILTERではなくMAGFILTERの方を切ると縮小なども綺麗に描画されるのですが
原因として考えられることは何でしょうか?
920:デフォルトの名無しさん
07/11/16 15:13:05
>>919
URLリンク(msdn.microsoft.com)
これは?
921:919
07/11/16 18:23:09
>>920
レスありがとうございます
DrawPrimitive前でテクスチャ座標を全て-0.5fにすると解決しました
922:デフォルトの名無しさん
07/11/16 18:29:22
テクスチャ座標を全て-0.5fにする
・・・
923:デフォルトの名無しさん
07/11/16 18:34:22
DirectXでリアルタイムレンダリングを解説した書籍でお薦めのものってありますか?
924:デフォルトの名無しさん
07/11/16 21:26:44
まてまて、DirectXって基本的にリアルタイムレンダリングを前提としてると思うんだけど。
プリレンダリングの解説書なんて見たことねーぞ。
925:デフォルトの名無しさん
07/11/16 21:59:37
リアルタイムレンダリング in DirectX
URLリンク(www.amazon.co.jp)
926:デフォルトの名無しさん
07/11/16 23:26:21
現在XP+DX9なのですが、DX10に向けてDX9で磨いたほうがいい技術はどういうものでしょうか。
DX9からDX10に変わることで何がどう違うのかいまいち分からなくて・・・
DX8からDX9になったときのような仕様変更のレベルじゃないですよね、単なる思い込みでしょうか。
927:デフォルトの名無しさん
07/11/16 23:45:12
必用なのはドキュメントに目を通し、サンプルを読み、
こんなところでグダグダグダグダくだらないことを言わない技術。
928:デフォルトの名無しさん
07/11/16 23:52:22
持っているグラボの性能にもよるけどピクセルシェーダに慣れておけばいいかもね