[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 12/06 18:57 / Filesize : 237 KB / Number-of Response : 929
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【C++】 DirectX初心者質問スレ Part14 【C】



1 名前:デフォルトの名無しさん [2007/09/08(土) 22:21:46 ]
※回答する人も、質問する人も必ず読んでください

これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
4.余計な雑談は不要ですよ

【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
 「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。

【 質問する方 】
・ どんな事で躓いているのか明確にしよう。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。
・ 回答して貰ったら、出来るだけお礼もしよう。

【C++】 DirectX初心者質問スレ Part13 【C】
pc11.2ch.net/test/read.cgi/tech/1182351826/

892 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 13:01:48 ]
それ以外にどうしろと?

893 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 14:49:52 ]
>>891
hight-fieldのことでしょ?

濃淡グレーマップが高さを示しているっていうの。
単純に0-255でRGB値を読み込んで、それをポリゴンの1頂点として
メッシュを刻んでいけばいいんでないの?

RGB値が読めないとかいうなら
PPM、PGMのASCIIモードで保存でもして読み込めばいい。
当然、ピクセル分の頂点が出来てしまうからデータは重い(255×255pixelなら、255×255頂点)
あと頂点間のつながりもプログラムで指定する。

ということなのでは?

894 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 15:11:38 ]
たぶん、
そういう超便利関数はないの?
って聞いてるんじゃね?

895 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 15:26:53 ]
pov-rayとかならあったかな。超便利関数
ポリゴン生成してくれるまでは知らんけど。


896 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 17:00:44 ]
っていうか、普通のバンプマッピングを使ってレンダリングしたら駄目なの?
地形とか作りたいなら、元データに高さマップ使う意味がわかんないし。

897 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 17:27:01 ]
ビットマップなんてヘッダ以外はただの2次元配列じゃないか

898 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 18:48:33 ]
www.microsoft.com/japan/msdn/coding4fun/gamedevelopment/beginning6/default.aspx
こんなの?
MDXだが。

899 名前:887 mailto:sage [2007/11/15(木) 19:15:13 ]
>>892
なかなか初心者には分からないものです。

>>893
なるほど、非常に参考になります。

>>894-895
そういうことになりますかね。xファイルをロードする関数があるので、
高さマップなどにも専用の関数がある、もしくは似たようなことが出来る
と思ってました。

>>896
バンプマッピングはあくまでも見た目だけで、実際に他のメッシュから
レイを飛ばして高さを取得したい場合などには不向きと調べた結果にありました。
それと地形作成専用のツールの出力が高さマップだったので。
逆にバンプマップ以外、高さマップ無しで効率よく広大な地形を生成する
手法が存在するのでしょうか?
>>898
実は質問する前にそのページを参考にして作ってみたのですが、原理やC#自体
よく理解していないなかったので手詰まり状態でした。
アドバイスのおかげでそのソースコードの意味も今分かりました。

とりあえずゴリゴリ頂点データを作成する関数をコーディングしてみます。
ありがとうございました。

900 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 21:53:13 ]
やってることが、どう見てもhight fieldだ。
ハイトフィールド、hight fieldでググると色々出てくるよ。
使い古された手法だから、結構ソースはあるはず





901 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:40:06 ]
>>901
デバッグ出力に何か情報でてないの?

903 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 23:10:23 ]
パラメータを見直した?
D3DXCreateTexture、LockRectの箇所でデバッガで止めて、引数の値を精査した?

904 名前:901 mailto:sage [2007/11/15(木) 23:37:31 ]
レスありがとうございます。

デバッグ出力は何も出てきていません。
パラメータは例で示した感じです。
動作自体はRetail Runtimeで目的通りに動作しているので、
何が間違っているのか・・・?


905 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:51:43 ]
D3DLOCK_DISCARDは、動的テクスチャのみ有効なフラグで
動的テクスチャの作成にはD3DPOOOL_MANAGEDは使用できないと
ヘルプにあるが。また、D3DUSAGE_DYNAMICを指定してないし。
つーか、デバッグメッセージは出てるだろ、メッセージレベルを上げろよ。

906 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 01:16:52 ]
>>904
D3DERR_INVALIDCALLが返ってきて、デバッグ出力に何も出ないなんてことは
最近のSDKでは起こらないと思うんだが。

>>901のコードを手元で試したらちゃんとメッセージが出たんだがね

Direct3D9: (ERROR) :D3DLOCK_DISCARD is allowed only with dynamic textures

907 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 01:18:10 ]
>>906の言うとおりならSDKが古いんじゃないの?

908 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 01:34:37 ]
>>906のメッセージはかなり昔のSDKでも出る

恐らくは>>905の言うとおりデバッグ出力レベルを上げてないだけかと
Retailランタイムでは動作するってのが分からんけど

909 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 01:40:05 ]
Retailで動くってのは無効なフラグをいちいちチェックしたりせずに無視してるだけなんじゃないかなたぶん

910 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 01:52:49 ]
DebugとRetailで、関数からの戻り値(HRESULT)が変わることもあるのかな?
>>901でLockRectが失敗すると、当然D3DLOCKED_RECTの値も無効な訳で、
そのまま処理進めると間違いなくAccess Violationな気が…



911 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 01:59:38 ]
とりあえず、仕様通りに書き直せばいいんでね?原因なんて暇人に調べさせておけ・・・
ってまさか、これは調べさせる釣りなのか?!

912 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 02:12:59 ]
これはまたまんまと

913 名前:901 mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 07:10:11 ]
デバッグメッセージの見方を知らないのかな?

915 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 08:53:14 ]
VC++8Expressだと出力ウィンドウにはネイティブのデバッグメッセージは
表示されないという罠があったりなかったり。


916 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 11:19:26 ]
質問者は、自分の環境とか使ってるDirectX SDKのバージョンを書かないけど、
このスレではそれがデフォなの?

917 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 12:13:20 ]
SDKはみんな2004Octを使ってるからいちいち書かなくてもいいだろ

918 名前:901 mailto:sage [2007/11/16(金) 12:29:42 ]
VC++2005EEだと出力ウィンドウに出てました・・・orz
主にコンソールで作業してるもので・・・
お騒がせしました。


919 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 13:46:44 ]
DirectX9で2Dゲームを作っていて
SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
の拡大縮小フィルタを設定しているのですが、
等倍や縮小描画をすると異常にぼやけてしまいます
何故かMINFILTERではなくMAGFILTERの方を切ると縮小なども綺麗に描画されるのですが
原因として考えられることは何でしょうか?

920 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 15:13:05 ]
>>919
ttp://msdn.microsoft.com/library/ja/DirectX9_c/directx/graphics/programmingguide/fixedfunction/textures/coordinates/mappingtexelstopixels.asp
これは?



921 名前:919 mailto:sage [2007/11/16(金) 18:23:09 ]
>>920
レスありがとうございます
DrawPrimitive前でテクスチャ座標を全て-0.5fにすると解決しました

922 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 18:29:22 ]
テクスチャ座標を全て-0.5fにする

・・・

923 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 18:34:22 ]
DirectXでリアルタイムレンダリングを解説した書籍でお薦めのものってありますか?

924 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 21:26:44 ]
まてまて、DirectXって基本的にリアルタイムレンダリングを前提としてると思うんだけど。
プリレンダリングの解説書なんて見たことねーぞ。

925 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 21:59:37 ]
リアルタイムレンダリング in DirectX
ttp://www.amazon.co.jp/dp/1931841276

926 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:26:21 ]
現在XP+DX9なのですが、DX10に向けてDX9で磨いたほうがいい技術はどういうものでしょうか。
DX9からDX10に変わることで何がどう違うのかいまいち分からなくて・・・
DX8からDX9になったときのような仕様変更のレベルじゃないですよね、単なる思い込みでしょうか。

927 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:45:12 ]
必用なのはドキュメントに目を通し、サンプルを読み、
こんなところでグダグダグダグダくだらないことを言わない技術。

928 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:52:22 ]
持っているグラボの性能にもよるけどピクセルシェーダに慣れておけばいいかもね






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<237KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef