トップページ⇒tech
1001コメント284KB

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

レス数が950を超えています。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/
0893デフォルトの名無しさん2010/10/27(水) 18:05:53
DirectX 9
0894デフォルトの名無しさん2010/10/27(水) 18:25:01
>>892

>D3DVIEWPORT9 構造体の X、Y、Width、Height メンバに指定する値は、
>レンダリング ターゲット サーフェイスの左上角からのスクリーン座標である。

http://msdn.microsoft.com/ja-jp/library/cc324602.aspx
0895デフォルトの名無しさん2010/10/27(水) 18:26:52
わお!ありがとうございます!
0896デフォルトの名無しさん2010/10/27(水) 19:56:45
LPDIRECT3DTEXTURE9型の変数を作ってそいつを
a=b;
みたいに代入したあとに、
b->Release()って、リリースしたら
どうなるの?
aにはポインタは入ったままだけど、テクスチャの実体は消えてる状態と思っていいですか?
それとも代入した時点で、内部参照カウンタが増えちゃってるんですかね?
0897デフォルトの名無しさん2010/10/27(水) 20:14:17
ただのIDirect3DTexture9ポインタのtypedefなので、
自分でAddRefするかスマートポインタにブチ込むかしない限り消えちゃうよ。
0898デフォルトの名無しさん2010/10/27(水) 20:25:43
消えちゃうんですね。そりゃ好都合です。
ありがとう。
0899デフォルトの名無しさん2010/10/27(水) 22:46:28
>>898
いえいえ
0900デフォルトの名無しさん2010/10/28(木) 00:51:45
>>883
>>887
ありがとうございます!!
ところでTexGenとはなんでしょうか?
すこし調べてみましたがこれといったものが引っかからなくてよく分かりません。
TexGen?
Texture Generation?
Texture Generation Plane?
行列かPLANEかなにかでしょうか?
OpenGLでは何かに(glGetTexGen?)使われていそうです。
0901デフォルトの名無しさん2010/10/28(木) 00:53:38
なんでジェネレータが出てこないのか。
0902デフォルトの名無しさん2010/10/28(木) 01:37:45
>>900
Texture Coordinate Generationが妥当な言葉かな?

ttp://developer.nvidia.com/object/texgen_texmatrix.html
DX7の解説なんでフラグとか微妙に違うかもしれないが、これで一通り説明されてる。

ちなみに、883は間違ってるよ。
0903デフォルトの名無しさん2010/10/28(木) 03:36:02
すいません
Spriteで表示させたい2つの画像があって
それぞれの画像を別々の角度で回転させらい場合
Spriteオブジェクトを2つ作らないとできませんか?
0904デフォルトの名無しさん2010/10/28(木) 04:34:58
まず"Sprite"の定義を明確にして
0905デフォルトの名無しさん2010/10/28(木) 08:54:03
バカ。
初心者なんだから、ID3DXSPRITEインターフェースを使った
描画に決まってるだろ。
そんぐらいわかってやれ。
0906デフォルトの名無しさん2010/10/28(木) 10:05:30
そう思うならそれ前提で回答してあげればいいじゃない
0907デフォルトの名無しさん2010/10/28(木) 10:14:08
荒らししかできない能無しなんだからほっとけよ
0908デフォルトの名無しさん2010/10/28(木) 11:11:02
しゃあねえ答えてやるよ
Spriteなんか使うな。以上。あれは邪道。
0909デフォルトの名無しさん2010/10/28(木) 11:44:41
ID3DXSpritesスプライトのことを言ってるならまったく使って問題ない
使い方さえ間違えなければ下手な初心者が自分で組んだシステムよりよほど高速に動作する
まぁ、ある程度理解してないと使いこなすのは地味に難しいんだけど
0910デフォルトの名無しさん2010/10/28(木) 12:11:56
ID3DXSpritesって知らなくて自前でつくっちゃったんだけど割と高速なん?

100万もの粒子表現とかに使えます?
0911デフォルトの名無しさん2010/10/28(木) 12:24:49
無理無理。
遅いし、自由がきかない
0912デフォルトの名無しさん2010/10/28(木) 12:35:15
自作自演カッコワルイ
0913デフォルトの名無しさん2010/10/28(木) 12:37:16
てか秒間1億2000万ポリも表示したら
普通に描いてもフィルレートで死ぬんじゃね?
0914デフォルトの名無しさん2010/10/28(木) 12:56:15
ここでID3DXSpritesは糞って言われてるのを鵜呑みにして
まともに使ったことない奴多そうだな
0915デフォルトの名無しさん2010/10/28(木) 12:59:34
男は黙ってSprite
0916デフォルトの名無しさん2010/10/28(木) 13:16:15
検索に引っかかる馬鹿一覧
http://www.google.co.jp/search?q=ID3DXSprites
0917デフォルトの名無しさん2010/10/28(木) 13:18:09
馬鹿者に日本語サイトが含まれていないのが救いだろう。
0918デフォルトの名無しさん2010/10/28(木) 13:20:28
で実際に計測した人はいないの?
0919デフォルトの名無しさん2010/10/28(木) 13:29:34
計測するまでもないだろ。邪道邪道。
0920デフォルトの名無しさん2010/10/28(木) 13:37:22
だろ。
0921デフォルトの名無しさん2010/10/28(木) 13:49:42
そもそもあくまで表現なのに、正確に一つ一つ出力しようと考える時点で能無しとしかいいようがない。
0922デフォルトの名無しさん2010/10/28(木) 13:52:21
日本語でおk
0923デフォルトの名無しさん2010/10/28(木) 15:21:24
>>903
これを見る限り1つで十分だ
http://msdn.microsoft.com/ja-jp/library/cc372355.aspx
0924デフォルトの名無しさん2010/10/28(木) 16:55:34
シェーダーで宣言したスカラー型の定数はfloat4型のレジスタに格納されるのですか
0925デフォルトの名無しさん2010/10/28(木) 17:51:55
答えずに荒らして、答えろといわれたら邪道wwwww
どんなけおまえバカなんだよ消えろカス。
0926デフォルトの名無しさん2010/10/28(木) 18:11:51
>>924
float4に展開されるけど
値は0〜255ではなく0.0〜1.0にマッピングされることに注意
0927デフォルトの名無しさん2010/10/28(木) 18:16:55
903です。ID3DXSpritesのことです。
すいませんでした。

923さんありがとうございます。
引数が5個のdrawを使ってたみたいです。
0928デフォルトの名無しさん2010/10/28(木) 18:17:53
>>926
なるほど、つまりboolを4つ使いたい場合はfloat4で格納したほうが節約になるんですね
0929デフォルトの名無しさん2010/10/28(木) 18:39:10
903です。
やってみたのですが
error C2660: 'ID3DXSprite::Draw' : 関数に 7 個の引数を指定できません。
のエラーが出ました。

調べたところDX9.0aでは引数7個で
DX9.0b以降は引数5個で回転角度が指定できなくなってました
私が使っているのはDX11(2010_JUNE)です。

やっぱりテクスチャーを個別に回転させる場合は
スプライト2個用意しないとだめなのかな?


0930デフォルトの名無しさん2010/10/28(木) 18:48:27
ttp://msdn.microsoft.com/ja-jp/library/bb174251(VS.85).aspx
0931デフォルトの名無しさん2010/10/28(木) 21:00:37
>>929
おお、まじか申し訳ない
SetTransformで回転させたらどうだろう
0932デフォルトの名無しさん2010/10/28(木) 22:19:27
先に言っとくが、いずれ詰むよ。
スプライトで出来ることは単純なことしかできないから。
普通の描画を覚えなさい。
0933デフォルトの名無しさん2010/10/28(木) 22:24:35
スプライトと一口にいっても色々な実装方法があるので一概には言えない。
0934デフォルトの名無しさん2010/10/28(木) 22:26:54
檸檬味のスプライト美味いからオススメ
期間限定だし
0935デフォルトの名無しさん2010/10/28(木) 22:43:29
てゆうか、なんでSDKのチュートリアルもやんないの?
あそこで単純な三角形を描画したよな?
だったら、四角形だって余裕だろ

ってならないところに希望がまったく見えない
てか、これができないレベルのままゲーム作ろうってのが正直ホントすげぇと思う
0936デフォルトの名無しさん2010/10/28(木) 22:46:12
また微妙に荒れそうだけど
ID3DXSpriteを真面目に使ったことなかったのでちょっと試して見た

GeForce 9600M GT(モバイル用チップ)にて
Debugコンパイルだと妙に重いけど
Releaseコンパイルならまぁ実用範囲内か?
遅いはともかく自由度が効かないという印象はなかった
頂点のローカル軸がスクリーン座標に合わせてy軸が下向きな以外は後はどうとでもなりそう
(計算でひっくり返してもいいけど計算量削減のため今回は元画像を反転で対応。だれか対応策知ってたら教えてください)

テクスチャ1枚だと面白くないので2枚を使ってランダムで描画した場合を想定して計測
 100 スプライト( 200ポリ) :630FPS
1000 スプライト( 2000ポリ):490FPS
5000 スプライト(10000ポリ):230FPS
10000スプライト(20000ポリ):140FPS
20000スプライト(40000ポリ): 75FPS

半透明スプライトの整合性を保つために
D3DXSPRITE_SORT_DEPTH_BACKTOFRONTフラグを立ててソートした場合

100 スプライト( 200ポリ) :590FPS
1000 スプライト( 2000ポリ):240FPS
5000 スプライト(10000ポリ): 50FPS
10000スプライト(20000ポリ): 25FPS
20000スプライト(40000ポリ): 14FPS
0937デフォルトの名無しさん2010/10/28(木) 22:50:05
初心者が一度初心者な質問しただけでカッカすんなよ
カルシウム足りてねぇよ・・・な?
09389362010/10/28(木) 22:50:16
>>936の計測に使用したソース
ttp://www5b.biglobe.ne.jp/~mya_a/dx/SimpleSample3.zip

ソートした場合スプライト数が増えるとかなりしんどい感じだけど
半透明オブジェクトは分離して最後に描画するようにすればまぁ、普通につかえるんじゃない?
0939デフォルトの名無しさん2010/10/28(木) 23:07:21
それぐらい考えてできるようになると、
もうスプライトなんか使わなくなってるよ。
0940デフォルトの名無しさん2010/10/28(木) 23:09:44
>>937
こんな糞クラスについて悩んでる時間がすでに無駄
なんでチュートリアルもやらないの?って怒りはさすがにわく
とりあえず虎を表示しろと
なぜ虎を表示できないのか?と

DirectX SDK チュートリアル
http://msdn.microsoft.com/ja-jp/library/bb219685%28v=VS.85%29.aspx

テンプレにぶち込んでいいレベルだろこれ
0941デフォルトの名無しさん2010/10/28(木) 23:13:12
>>940
もういいよ
勝手に一人でイライラしてろよ・・・
0942デフォルトの名無しさん2010/10/28(木) 23:16:43
たぶん虎はできるんだよ。
その応用ができないだけだと思う。
0943デフォルトの名無しさん2010/10/28(木) 23:33:38
>>942
したらモデリングソフトで4頂点の三角形2枚を設定するだけじゃね?
努力の方向がまちがってんねん
メタセコに金入れてXファイル出力できるようにすりゃそれで終りだろ
0944デフォルトの名無しさん2010/10/28(木) 23:35:31
虎までのチュートリアルでスプライトの設計までできるようになるわけないだろう
0945デフォルトの名無しさん2010/10/28(木) 23:36:31
たぶん座標変換でつまずいてるんでしょ。
表示は出来ても、理解してないから応用ができない。
つまり、自分のイメージしたとおりに描画ができないってことだろ。

まあ、そういう初心者を救ってあげるのがこのスレの役目だ。
0946デフォルトの名無しさん2010/10/28(木) 23:36:38
>>943
関係ないが、金入れなくてもxファイル出力できるぞ
0947デフォルトの名無しさん2010/10/28(木) 23:39:12
>>946
金入れたほうがいいと思うな
keynoteがないから階層出力できないし
0948デフォルトの名無しさん2010/10/28(木) 23:39:40
スプライトをメッシュにするとかないわ〜
0949デフォルトの名無しさん2010/10/28(木) 23:39:54
頭が悪いだけだろ。
どうせまたすぐ躓く。
0950デフォルトの名無しさん2010/10/28(木) 23:41:02
君なりのテンプレを作ってくれたまえ。
一度見てみたいよ。
0951デフォルトの名無しさん2010/10/28(木) 23:41:57
>>948
なんで?
なにか不具合ある?
俺からしたら手動でUV設定してるお前のがありえねーよ
0952デフォルトの名無しさん2010/10/28(木) 23:43:17
板ポリにxファイル使うのもちょっと冗長じゃないか?
0953デフォルトの名無しさん2010/10/28(木) 23:43:24
UVなんかどうでもなるが
1スプライトごとに1回DrawSubsetするの?
0954デフォルトの名無しさん2010/10/28(木) 23:43:43
板ポリにXファイル使うのはありえないだろ。
それぐらい普通にやれ
0955デフォルトの名無しさん2010/10/28(木) 23:44:17
>>953
パーティクルがやりたいとかそういう例の話はいまはしてないからね?
0956デフォルトの名無しさん2010/10/28(木) 23:45:38
>>954
なんで?
あってもいいじゃん
0957デフォルトの名無しさん2010/10/28(木) 23:45:46
はいはい邪道邪道
0958デフォルトの名無しさん2010/10/28(木) 23:46:09
次スレ立ててくる
0959デフォルトの名無しさん2010/10/28(木) 23:47:34
>>955
パーティクルなんて関係ねぇーよ
普通に2Dゲーム作るのだってスプライトごとにDrawPrimitiveなんてしねーよ
0960デフォルトの名無しさん2010/10/28(木) 23:49:01
>>959
別にDrawPrimitiveをやるやらないはお前がタイミング決めろよ
XファイルをMSの関数にまかせたら1枚ごとになるけど
読み込んだXファイルを自分のフォーマットに変換して
好きにすればいいだろ
0961デフォルトの名無しさん2010/10/28(木) 23:49:02
と思ったら規制だった
>>970たのむ
0962デフォルトの名無しさん2010/10/28(木) 23:51:34
悩んで成長するんだ
0963デフォルトの名無しさん2010/10/28(木) 23:54:26
>>960
>読み込んだXファイルを自分のフォーマットに変換して

ができるくらならもうそれは初心者じゃない
Xファイルで読んだら簡単じゃんって言っておいてハードルを上げる矛盾
0964デフォルトの名無しさん2010/10/28(木) 23:57:48
「遅いし、自由がきかない」とか言ってたのをひっくり返されて論点をずらそうとしてるだけじゃね?
0965デフォルトの名無しさん2010/10/28(木) 23:59:21
DirectX11を使えばいいだろ。
0966デフォルトの名無しさん2010/10/29(金) 00:06:26
>>963
なんで速度出そうとする話になってるの?
Xファイルは遅いの?
0967デフォルトの名無しさん2010/10/29(金) 00:09:14
速度いらないならID3DXSpriteでいいじゃんw
0968デフォルトの名無しさん2010/10/29(金) 00:10:05
Xファイルもシェーダーを使わなきゃ自由はきかないだろ。
0969デフォルトの名無しさん2010/10/29(金) 00:10:20
>>967
速度だけがネックなんだっけ?
0970デフォルトの名無しさん2010/10/29(金) 00:13:23
チュートリアルで虎を表示した延長で表示できてかつ応用が利くって話だったと思うんだけど
0971デフォルトの名無しさん2010/10/29(金) 00:18:14
質問で返して論点ずらしまくりだな
0972デフォルトの名無しさん2010/10/29(金) 00:21:03
>>971
一番はじめはスプライトなんてゴミを使うなだし
どこも間違ってないじゃん

現時点でメリットないんだからw
仕様もよくわからんし、扱いづらいし
やってることは板ポリの表示だろ

何が魅力あるのかねwこのクラスw
この初心者ホイホイ力はすさまじいな
本当に役に立つチュートリアルのほうは手を出さないんだな
0973デフォルトの名無しさん2010/10/29(金) 00:23:58
仕様もよく分かってないのに批判してるのか
0974デフォルトの名無しさん2010/10/29(金) 00:28:36
>>973
細かいところでたしか罠があったな
忘れちまったけど
0975デフォルトの名無しさん2010/10/29(金) 00:32:09
んで、Xファイルはやっぱり遅いから使わないの?
0976デフォルトの名無しさん2010/10/29(金) 00:33:55
うん
0977デフォルトの名無しさん2010/10/29(金) 00:43:17
∵ゞ(≧ε≦o)ぶっ
0978デフォルトの名無しさん2010/10/29(金) 01:09:18
次スレ
http://hibari.2ch.net/test/read.cgi/tech/1288282082/
0979デフォルトの名無しさん2010/10/29(金) 02:52:51
>>901
>>902
すいません。どうにも用語が分からなくて。片っ端から調べたつもりでした。
早速そのPDFを読んでみます。ありがとうございました。
0980デフォルトの名無しさん2010/10/29(金) 15:40:56
うめ
0981デフォルトの名無しさん2010/10/29(金) 18:28:57
梅
0982デフォルトの名無しさん2010/10/29(金) 18:30:11
うめ
0983デフォルトの名無しさん2010/10/29(金) 20:30:39
COM用のスマートポインタって実際クラスでラップするからあまり使わなかったりする・・・
0984デフォルトの名無しさん2010/10/29(金) 21:26:20
>>983
そのラップするクラスの中で使えば解k(ry
0985デフォルトの名無しさん2010/10/29(金) 22:45:09
梅
0986デフォルトの名無しさん2010/10/29(金) 23:51:56
D
0987デフォルトの名無しさん2010/10/29(金) 23:57:07
i
0988デフォルトの名無しさん2010/10/30(土) 00:55:00
r
0989デフォルトの名無しさん2010/10/30(土) 01:47:53
e
0990デフォルトの名無しさん2010/10/30(土) 01:52:52
c
0991デフォルトの名無しさん2010/10/30(土) 02:04:32
t
0992デフォルトの名無しさん2010/10/30(土) 02:45:33
S
レス数が950を超えています。1000を超えると書き込みができなくなります。