【C++】 DirectX初心者質問スレ Part31 【C】
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん
2010/09/30(木) 21:45:21これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
4.余計な雑談は不要ですよ
【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。
【 質問する方 】
・ どんな事で躓いているのか明確にしよう。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。
・ 回答して貰ったら、出来るだけお礼もしよう。
前スレ
【C++】 DirectX初心者質問スレ Part30 【C】
http://hibari.2ch.net/test/read.cgi/tech/1278214135/
0830デフォルトの名無しさん
2010/10/26(火) 03:15:32深度も作ったけどダメだった。
>>829
まじかよ!困ります。
0831770
2010/10/26(火) 03:23:42私にもはっきり原因がわかりません。
直ったときにやったことと言えば、
D3DPRESENT_INTERVAL_IMMEDIATEを0に変更。
FPS制御用の関数をメインループから外す。
この2点だけです。
ガタンガタンの表現が悪くて申し訳ないんですが、
縦でも横でも移動するときに発生します。
それは一定の間隔です。
通常ならスーッっと行くものが、一瞬ブルッと震える感じになります。
ただしこれは、壁にぶつかってるときはこの現象は起こりません。
その現象を具体的に説明すると、
if(x<LEFT_MAX)
x=LEFT_MAX;
上記のように上下左右に移動制限をかけてます。
このようなコードだと、左を押し続けてても、座標は変わりません。
ですが、キーは押し続けてるので移動している際のアニメーションは動きます。
この時はガタンガタンとはなりません。
壁にぶつからないときの移動の時に、ガタンガタンとなってしまうわけです。
個人的には自分でFPSを制御したいと思っています。
こんな感じです。
0832デフォルトの名無しさん
2010/10/26(火) 03:51:59タイマの待ち時間を
16 17 17 16 17 17 16 17 17
みたいに1秒間に確実に60回になるようにやってみな
0833770
2010/10/26(火) 03:57:39やってみます
0834デフォルトの名無しさん
2010/10/26(火) 04:17:37いや、それ複数のレンダーターゲットに同時に描画する機能の説明だから。
駄目な設定のときって、デバッグランタイムにしてデバッグメッセージ見たら、
何かメッセージ出てない?
0835デフォルトの名無しさん
2010/10/26(火) 04:29:32MRTのことをマルチパスレンダリングって言ってるだとおもうけど
0836デフォルトの名無しさん
2010/10/26(火) 13:41:26同じものがあればそれを使う方法って無いですかね?
0837デフォルトの名無しさん
2010/10/26(火) 13:53:330838デフォルトの名無しさん
2010/10/26(火) 13:57:27どこか判ったw
0839デフォルトの名無しさん
2010/10/26(火) 14:06:330840デフォルトの名無しさん
2010/10/26(火) 14:08:02頂点バッファ作るたびに頂点宣言オブジェクトを作るってことですか?
0841デフォルトの名無しさん
2010/10/26(火) 14:16:39説明してみな
0842デフォルトの名無しさん
2010/10/26(火) 14:31:43コンストラクタとか言わないよね
0843デフォルトの名無しさん
2010/10/26(火) 14:33:380844デフォルトの名無しさん
2010/10/26(火) 14:34:230845デフォルトの名無しさん
2010/10/26(火) 15:16:300846デフォルトの名無しさん
2010/10/26(火) 15:25:000847デフォルトの名無しさん
2010/10/26(火) 15:52:04PRIMITIVETYPEではどれを使って描画してるのですか?
0848デフォルトの名無しさん
2010/10/26(火) 16:13:430849デフォルトの名無しさん
2010/10/26(火) 16:15:16D3DPT_TRIANGLELIST
0850デフォルトの名無しさん
2010/10/26(火) 16:47:04おまえ消えろや
0851デフォルトの名無しさん
2010/10/26(火) 17:00:050852デフォルトの名無しさん
2010/10/26(火) 17:01:150853デフォルトの名無しさん
2010/10/26(火) 17:01:570854デフォルトの名無しさん
2010/10/26(火) 17:04:550855デフォルトの名無しさん
2010/10/26(火) 17:10:26>The subset that is specified by AttribId will be rendered by the IDirect3DDevice9::DrawIndexedPrimitive method,
>using the D3DPT_TRIANGLELIST primitive type, so an index buffer must be properly initialized.
PIXでみると中で何をどう呼んでるか全部見れるよ
0856デフォルトの名無しさん
2010/10/26(火) 17:14:54おまえ消えろや
0857デフォルトの名無しさん
2010/10/26(火) 17:17:200858デフォルトの名無しさん
2010/10/26(火) 17:19:230859デフォルトの名無しさん
2010/10/26(火) 17:22:530860デフォルトの名無しさん
2010/10/26(火) 17:23:540861デフォルトの名無しさん
2010/10/26(火) 17:30:180862デフォルトの名無しさん
2010/10/26(火) 17:36:290863デフォルトの名無しさん
2010/10/26(火) 17:58:53著作権者でもなくむしろ普段は著作権侵害側の癖に、
特定可能な個人が著作権侵害行為を行うと狂った様に集団で攻撃したりとかな
0864デフォルトの名無しさん
2010/10/26(火) 18:02:28まあ、それぐらいで調度いいんじゃね?
みんながおおっぴらにやるようになったらそれこそ最期だと思われ
0865デフォルトの名無しさん
2010/10/26(火) 18:21:210866デフォルトの名無しさん
2010/10/26(火) 18:28:04これでよくわかっただろ
いつも上から目線のクズさんよ
0867デフォルトの名無しさん
2010/10/26(火) 18:40:54お前も上から・・・いやなんでもない
0868デフォルトの名無しさん
2010/10/26(火) 18:58:41初心者攻撃と著作権侵害の関係性がまったく分かりません
0869デフォルトの名無しさん
2010/10/26(火) 19:27:40俺はそいつとは別人だ
0870デフォルトの名無しさん
2010/10/26(火) 21:32:18同意
このタイミングで言うからさっぱりわからないw
「これでよくわかったろ?」とかwわからねーよw
0871デフォルトの名無しさん
2010/10/26(火) 21:39:230872デフォルトの名無しさん
2010/10/26(火) 23:06:200873デフォルトの名無しさん
2010/10/26(火) 23:06:530874デフォルトの名無しさん
2010/10/26(火) 23:12:240875デフォルトの名無しさん
2010/10/26(火) 23:36:300876デフォルトの名無しさん
2010/10/26(火) 23:47:13DirectXから話それるけど。
0877デフォルトの名無しさん
2010/10/26(火) 23:48:420878デフォルトの名無しさん
2010/10/26(火) 23:49:500879デフォルトの名無しさん
2010/10/26(火) 23:50:32設計とか全然関係ないことだと叩かれる可能性大
0880デフォルトの名無しさん
2010/10/26(火) 23:53:040881デフォルトの名無しさん
2010/10/27(水) 00:36:43そいつを戻り値にした場合、そのポインタって消滅するんですか?
それとも使えますか?
0882デフォルトの名無しさん
2010/10/27(水) 00:55:28Direct3D9よりかはDirect3D10のサンプルを見ながらやっているのですが、
Direct3D9でデバイスにSetTextureStageState関数でD3DTSS_TCI_CAMERASPACEPOSITIONのフラグを
使っているプログラムがあり、これをDirect3D10で書くにはどうしたらいいのでしょうか。
全部シェーダー側でやると思うのいですが、どのような計算をしているのかが分かりません。
よろしければ教えていただけないでしょうか。
0883デフォルトの名無しさん
2010/10/27(水) 00:58:320884デフォルトの名無しさん
2010/10/27(水) 00:59:56つかえるとおもいます
0885デフォルトの名無しさん
2010/10/27(水) 01:03:220886827
2010/10/27(水) 01:13:13レンダリングできるようになったので報告。
原因不明、なぜかできるようになった。
たぶん、ポインタ指定ミスとかそんなショボイミスだと思う。
てか、普通にダウンサンプリングっていう技法?で存在するから
できなきゃおかしいって話だった。
0887デフォルトの名無しさん
2010/10/27(水) 01:16:15頂点座標をカメラ空間まで変換した座標をそのままテクスチャ座標に入れる。
頂点座標にWorld*View行列をかけるだけ。
プロジェクション行列はかけないのが、普通の座標変換とは違うとこ。
しかし、TexGenを使っているプログラムでは、間違いなくテクスチャ座標変換も同時に
使われているから、D3DTSS_TEXTURETRANSFORMFLAGSやD3DTS_TEXTUREnも要確認。
0888デフォルトの名無しさん
2010/10/27(水) 13:44:15hlslでビューポートを変更できますか?
ビューポートが固定機能パイプラインってのは判ったのですが、
ではプログラマブルパイプラインではどうやるのか判らないのです…
0889デフォルトの名無しさん
2010/10/27(水) 13:46:330890デフォルトの名無しさん
2010/10/27(水) 13:47:459以前は無理
10からは可能
0891デフォルトの名無しさん
2010/10/27(水) 14:13:01>>890
ありがとうございます!
0892デフォルトの名無しさん
2010/10/27(水) 17:54:110893デフォルトの名無しさん
2010/10/27(水) 18:05:530894デフォルトの名無しさん
2010/10/27(水) 18:25:01>D3DVIEWPORT9 構造体の X、Y、Width、Height メンバに指定する値は、
>レンダリング ターゲット サーフェイスの左上角からのスクリーン座標である。
http://msdn.microsoft.com/ja-jp/library/cc324602.aspx
0895デフォルトの名無しさん
2010/10/27(水) 18:26:520896デフォルトの名無しさん
2010/10/27(水) 19:56:45a=b;
みたいに代入したあとに、
b->Release()って、リリースしたら
どうなるの?
aにはポインタは入ったままだけど、テクスチャの実体は消えてる状態と思っていいですか?
それとも代入した時点で、内部参照カウンタが増えちゃってるんですかね?
0897デフォルトの名無しさん
2010/10/27(水) 20:14:17自分でAddRefするかスマートポインタにブチ込むかしない限り消えちゃうよ。
0898デフォルトの名無しさん
2010/10/27(水) 20:25:43ありがとう。
0899デフォルトの名無しさん
2010/10/27(水) 22:46:28いえいえ
0900デフォルトの名無しさん
2010/10/28(木) 00:51:45>>887
ありがとうございます!!
ところでTexGenとはなんでしょうか?
すこし調べてみましたがこれといったものが引っかからなくてよく分かりません。
TexGen?
Texture Generation?
Texture Generation Plane?
行列かPLANEかなにかでしょうか?
OpenGLでは何かに(glGetTexGen?)使われていそうです。
0901デフォルトの名無しさん
2010/10/28(木) 00:53:380902デフォルトの名無しさん
2010/10/28(木) 01:37:45Texture Coordinate Generationが妥当な言葉かな?
ttp://developer.nvidia.com/object/texgen_texmatrix.html
DX7の解説なんでフラグとか微妙に違うかもしれないが、これで一通り説明されてる。
ちなみに、883は間違ってるよ。
0903デフォルトの名無しさん
2010/10/28(木) 03:36:02Spriteで表示させたい2つの画像があって
それぞれの画像を別々の角度で回転させらい場合
Spriteオブジェクトを2つ作らないとできませんか?
0904デフォルトの名無しさん
2010/10/28(木) 04:34:580905デフォルトの名無しさん
2010/10/28(木) 08:54:03初心者なんだから、ID3DXSPRITEインターフェースを使った
描画に決まってるだろ。
そんぐらいわかってやれ。
0906デフォルトの名無しさん
2010/10/28(木) 10:05:300907デフォルトの名無しさん
2010/10/28(木) 10:14:080908デフォルトの名無しさん
2010/10/28(木) 11:11:02Spriteなんか使うな。以上。あれは邪道。
0909デフォルトの名無しさん
2010/10/28(木) 11:44:41使い方さえ間違えなければ下手な初心者が自分で組んだシステムよりよほど高速に動作する
まぁ、ある程度理解してないと使いこなすのは地味に難しいんだけど
0910デフォルトの名無しさん
2010/10/28(木) 12:11:56100万もの粒子表現とかに使えます?
0911デフォルトの名無しさん
2010/10/28(木) 12:24:49遅いし、自由がきかない
0912デフォルトの名無しさん
2010/10/28(木) 12:35:150913デフォルトの名無しさん
2010/10/28(木) 12:37:16普通に描いてもフィルレートで死ぬんじゃね?
0914デフォルトの名無しさん
2010/10/28(木) 12:56:15まともに使ったことない奴多そうだな
0915デフォルトの名無しさん
2010/10/28(木) 12:59:340916デフォルトの名無しさん
2010/10/28(木) 13:16:15http://www.google.co.jp/search?q=ID3DXSprites
0917デフォルトの名無しさん
2010/10/28(木) 13:18:090918デフォルトの名無しさん
2010/10/28(木) 13:20:280919デフォルトの名無しさん
2010/10/28(木) 13:29:340920デフォルトの名無しさん
2010/10/28(木) 13:37:220921デフォルトの名無しさん
2010/10/28(木) 13:49:420922デフォルトの名無しさん
2010/10/28(木) 13:52:210923デフォルトの名無しさん
2010/10/28(木) 15:21:24これを見る限り1つで十分だ
http://msdn.microsoft.com/ja-jp/library/cc372355.aspx
0924デフォルトの名無しさん
2010/10/28(木) 16:55:340925デフォルトの名無しさん
2010/10/28(木) 17:51:55どんなけおまえバカなんだよ消えろカス。
0926デフォルトの名無しさん
2010/10/28(木) 18:11:51float4に展開されるけど
値は0〜255ではなく0.0〜1.0にマッピングされることに注意
0927デフォルトの名無しさん
2010/10/28(木) 18:16:55すいませんでした。
923さんありがとうございます。
引数が5個のdrawを使ってたみたいです。
0928デフォルトの名無しさん
2010/10/28(木) 18:17:53なるほど、つまりboolを4つ使いたい場合はfloat4で格納したほうが節約になるんですね
0929デフォルトの名無しさん
2010/10/28(木) 18:39:10やってみたのですが
error C2660: 'ID3DXSprite::Draw' : 関数に 7 個の引数を指定できません。
のエラーが出ました。
調べたところDX9.0aでは引数7個で
DX9.0b以降は引数5個で回転角度が指定できなくなってました
私が使っているのはDX11(2010_JUNE)です。
やっぱりテクスチャーを個別に回転させる場合は
スプライト2個用意しないとだめなのかな?
レス数が900を超えています。1000を超えると表示できなくなるよ。