[表示 : 全て 最新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/

873 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 19:15:26 ]
>>870
だから、何を入れるのか決めるのってCgだとuniform使うんだってば
何回も同じこと言わせないでください><
uniformがついてないからわからないんですぅ!


と、厨臭いこと言い方ですいませんでした。自分の勉強不足です
ただ一人じゃわからなくて。アドバイス頂けたらと思って伺いました。
ほんとすいません。教えてください

874 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 19:41:34 ]
            /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;゙i、
               i;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;|i
           /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;i゙i
           /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/|;;ト;ト;;;;;;;;;;;;;;;;;;;;;;;;ヽ、
            /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ノ;;ノシ/ノ |゙!iヽヾ;;;;;;;;;;;;;;;;;;;;;;ヽ、
         /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ンツン    ! ヽ、 ヾ;;;;;;;;;;;;;;;;;;;;;;;ヾ
           /;;;;;;;;;;;;;;;;;;;;;;;/シンて__;;;、   ,;;;.ソ ~゙ヽ;;;;;;;;;;;;;;;;;ヽ
        /;;;;;;;;;;;;;;;;;;;;;/ゾ      ゙!  /     ノミ;;;;;;;;;;;;;;;;ヽ、
      /;;;;;;;;;;;;;;;;;;;;入  ーt┬‐ュ ヽ ( <エコブ ┃ノ;;;;;;;;;;;;;;;;;ヾ
      /;;;;;;;;;;;;;;;;;;;;;;;;ヽ┤     ̄_ノ  ゙i i ‐-、   |;;;;;;;;;;;;;;;;;;;;;;;;゙i  必要な分は見せたということだ
.      /;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::l、        : : ゙    ノ;;;;;;;;;;;;;;;;;;;;;;;;;;l
    /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::T:、_     r‐ i i┐  イ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;l   これ以上は見せぬ
.    l;;;;;;;;;;;;;;;;;;;;;;;;;/;|   k┴ヽ、  /‐、l´゙)~ヽ ( |イ;;;;;;;;;;;;;;;;;;;;;;;;;;;;l
    l;;;;;;;;;;;;;;;;;;;;;;イ;;;|  |   / /  _゙'_'゙  ゙i )| |;;;;;;;;;;;;;;;;;;;;;;;;;;;l
     l;;;;;;;r‐''゙;;;;:;;:;;;;l  ヽ、 ,|. (   f‐ニ‐ヽ /./ /ヾヾ;;;;;;;;;;;;;;;;;;;l
     ヾ/;;;;;;;;;:;;;;:;;;;;ヽ   ゙ヽ\ヽ―'゙――゙'‐// / /;;;:::....゙''‐、;;;;/
  _,.,.r/ ,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ヽ   ゙i ゙i、゙'v    v' i / ノ;;;;::::;;;;;;;;;;;;;;;:.ヽ、
 /::/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ヽ、  ゙r_ヽ! 、,.  ! |  ,/;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;ヽ、

875 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 20:00:53 ]
>>873
てゆーかホントにお前が何がやりたいんだよ
>>795がやりたいとして
ホントに頂点数は5なのか?
それくらいならできなくもないけど頂点数が数十個のオブジェクトを
この方法で処理するのは土台無理な話だし
ホントにそんな処理が必要なのかも疑わしい

いま自分が目指してる最終地点と
それに対してどういうアプローチをしてるのかぐらい書いてもらわんと
説明する気も起きない

876 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 20:31:58 ]
>>795さんではありません><

単純に>>869の状況のときに
float4 position1にはどんな座標が入ってるか知りたいだけです!

ポリゴンは(0 0 0) (1 1 0) (-1 1 0)で三角形指定して、頂点が3つあるのに
シェーダーで受け取るPOSITIONセマンテックは1つだけっていうのがわからないのです

Output {
float4 position : POSITION;
float4 color : COLOR;
};
main (float3 position : POSITION)
{
Output OUT;

OUT.position = float4(position, 1);
OUT.color = float4(0, 1, 0, 1); // RGBA green

return OUT;
}

なんでfloat3 positionが1個だけなの?
じゃあ、これに float3 position2 : POSITION1とかしたら、何が入るの?
(0 0 0 ) (1 1 0)? それとも(-1 1 0)?
そこら辺の説明が本でも何でも載ってないのでわかんないんです

877 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 20:39:44 ]
>>876が何を言いたいのか良くわからんが
頂点数が3個なら
mainは頂点数と同じ数だけ
つまり3回呼ばれてる
1回目のmainのpositionには(0,0,0)がはいっていて
2回目のmainのpositionには(1,1,0)が以下略
ここまではOK?

878 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 20:55:26 ]
そして
float3 position2 : POSITION1だが
Cgがどんなものなのか知らんので
POSITION1なんてセマンティックがあるのかは知らんが
あると仮定するとposition2には何も入ってきていない
position2になにを入れるかは
頂点情報を設定するときに自分で何をいれるのか決める部分なので
何も指定してないのなら何も入らない

879 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:05:01 ]
>>877-878
ありがとうございます><

間違ってたところがありました。POSITIONはセマンティックが1つだけで
COLOR1とCOLOR0、 TEXCOORD0〜7でした!

でもPOSITIONのところはわかりました!ありがとうございます!その頂点分呼び出されて
そのときはPOSITIONに、その値が入るんですね!


でもCOLOR0〜1とTEXCOORD0〜7がわからなくなってしまいました。
これも外部から指定するのでしょうか。uniformじゃ無いのに。

880 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:07:30 ]
なんという理解力の無さだ・・・

881 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:07:31 ]


struct Vertex{
D3DXVECTOR3 position ;// 頂点の座標(必須)
D3DXVECTOR4 color ;
D3DXVECTOR3 position1 ;// 拡張した頂点情報
D3DXVECTOR3 position2 ;// 拡張した頂点情報
} ;

#define MY_V (D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX2|D3DFVF_TEXCORDSIZE3(0)|D3DFVF_TEXCORDSIZE3(1))

main (
float3 position : POSITION
float3 color : COLOR,
float3 posion1 : TEXCOORD0,
float3 posion2 : TEXCOORD1
)
{ ・・・

TEXCOORDはテクスチャ座標を入れるために用意されてはいるが
別にテクスチャ座標を入れないといけない決まりはない
たとえば複数光源の計算をしたいときにそれぞれの光源ベクトルをいれたりとか
ここはプログラマが必要に応じて拡張すべきところでみんなはこれのことを言っている
一つ一つの頂点に複数の情報を持たせられるよってだけで
複数の頂点の情報がはいってくるわけではない



882 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:14:53 ]
つまりTEXCOORDは何入れてもいいということですか。

twoTextures(float2 position : POSITION,
float2 texCoord : TEXCOORD0,

uniform float2 leftSeparation,
uniform float2 rightSeparation,

out float4 oPosition : POSITION,
out float2 leftTexCoord : TEXCOORD0,
out float2 rightTexCoord : TEXCOORD1
)
{
oPosition = float4(position, 0, 1);
leftTexCoord = texCoord + leftSeparation;
rightTexCoord = texCoord + rightSeparation;
}

でもこういう風に、「入ってくる側のfloat2 texCoord : TEXCOORD0,」の場合はプログラム側で
指定しないとダメなんですよね。

outのところは、自分の都合にあわせて設定してるっていうのはわかるんですが。


883 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:30:31 ]
やべえ、頭痛くなってきた
誰か、バトンパス

884 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:53:21 ]
   ↓
   ↓
   ↓

885 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:28:46 ]
教えて君・粘着君に付き合うのが嫌なら無視するのが常識。


886 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:33:51 ]
お前頭いいな。

887 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 05:26:10 ]
高さマップの画像からデコボコな地形を生成したいんですが、
全くやり方が分かりません。ヒント頂けないでしょうか?

888 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 07:08:10 ]
画像の1ドット毎を高さに変えるだけ。
RGB、つまり256色x3色=768段階の高さが取得できる(アルファも取りたけば自由に)。
黒なら高さ0、白なら768xαという高さに決めればあとは自分でその高さに点を配置して面を作っていく。

889 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 07:31:08 ]
24bitもってて768段階? なんでbitでやらんの
あと移動可などのフラグとか含めたりする。



890 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 07:58:39 ]
俺は、>>887の質問の内容が分からん。
エスパーの例題かと思った。
元データはバンプマッピング用のテクスチャの事?
デコボコな地形って何?ポリゴングリッドの事?
それは、DirectXの質問なの?

891 名前:887 mailto:sage [2007/11/15(木) 12:27:14 ]
言葉足らずで申し訳ないです。
高さマップの画像を元に、メッシュを作成する方法です。
>>888
画像のデータを1ピクセルごと取得していって、自分で頂点を打っていく
ということでしょうか?



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