DirectX総合スレ (Part2)
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
04/09/22 23:30:32ID:anobjZYP基礎的な質問+高度な質問も簡潔かつ簡単に答えることをモットーにして頂き
このスレの回転を早めて常にアクティブなスレにしたいと思っております。
このスレに質問等を書かれる方はまず最初に自分でしっかりと調べたのちに聞かれることをお願いします。
質問に対する答えも簡潔に出来る限りわかりやすくお願い致します。
テンプレは >>2以降で
0666名前は開発中のものです。
04/12/05 19:27:17ID:nqBSDUP50667名前は開発中のものです。
04/12/05 20:11:26ID:sx/rYgSf0668名前は開発中のものです。
04/12/05 20:50:25ID:v+CntsyoPrimitiveかPointerかどちらかじゃない?
0669名前は開発中のものです。
04/12/05 21:03:15ID:QLQ14TYZPointerでええんでない?
0670名前は開発中のものです。
04/12/05 21:27:47ID:5SqG+OONMDXでは「DrawPrimitiveUP」は「DrawUserPrimitives」になっている。
これに限らず、MDXの識別子はネイティブに比べて洗練されているものが多い。
0671名前は開発中のものです。
04/12/05 21:43:02ID:0VkVkXGI0672名前は開発中のものです。
04/12/05 22:12:34ID:aoB/oDY80673名前は開発中のものです。
04/12/05 22:19:11ID:AAFrIuZ20674名前は開発中のものです。
04/12/05 22:52:51ID:1GYGDGxZそれで間違いなさそうだな
なんの根拠もなくupdate(最新のものにしろ!)かup-to-date(最新ですよ(・∀・)ニヤニヤ)の事だと思ってた
なんて逆説的でウィットが効いてるんだと
0675名前は開発中のものです。
04/12/06 19:56:36ID:tzWTN0yZDrawPrimitiveAge
DrawPrimitiveSage
0676名前は開発中のものです。
04/12/07 01:50:13ID:OZKhoYmtこれの引数に行列式(float *)があるとおもうのですが、これはfloat1個
を渡すのでしょうか?いまいち行列式というのがわからなくて・・・すいません。
0677名前は開発中のものです。
04/12/07 01:56:09ID:hrWkwjoi確か逆行列を求めるついでに行列式の値も求めますよーって関数のはず
逆行列求めるために行列式の値が必要だから
0678名前は開発中のものです。
04/12/07 02:06:24ID:rU7nZmmhそういえばそこNULLしか入れたことない
0679名前は開発中のものです。
04/12/07 11:30:35ID:XlJuf7xJ満足いく答えないから次はトキワか?
0680名前は開発中のものです。
04/12/07 11:48:25ID:V3qlnNS7いまいち行列式というのがわからない人ならNULLを入れればいいだべ。
0681名前は開発中のものです。
04/12/07 12:29:52ID:Idq17V4vこうやって使う
float determinant;
D3DXMatrixInverse( &matInv, &determinant, &matTaget );
if( determinant == 0.0f )//〜
determinant(==行列式)が0ならば、逆行列matInvは存在しない
必ず逆行列が存在すると分かっているならNULLを指定しても構わない
0682名前は開発中のものです。
04/12/07 13:21:16ID:QsZOwp860683名前は開発中のものです。
04/12/07 13:35:20ID:L7YDUGj+0684名前は開発中のものです。
04/12/07 13:50:49ID:qOJq2qnuもちさん です。
0685名前は開発中のものです。
04/12/07 16:16:48ID:my4qFj6E0686名前は開発中のものです。
04/12/07 17:39:19ID:qnMKNswX0687名前は開発中のものです。
04/12/07 19:11:48ID:o4M1UVgX余裕がなくてイライラしてるんです。
どうか許してやってください。。。
0688名前は開発中のものです。
04/12/07 20:46:48ID:vW3T0vsv0689名前は開発中のものです。
04/12/07 21:07:21ID:obnWwHdN0690名前は開発中のものです。
04/12/07 23:41:03ID:1oL6D2Q3それじゃ駄目だろ。
0.0fなんて綺麗な0は浮動小数点じゃほとんど返ってこないんじゃね?
なんか浮動小数点の足切り用の定数なかったっけ?
0691名前は開発中のものです。
04/12/07 23:49:43ID:vW3T0vsvFLT_いぷしろん?
まあ、この場合は0か否かが知りたいだけなので
これでよし。
0692名前は開発中のものです。
04/12/08 00:03:29ID:rFHjY4ZV大丈夫な悪寒。
0693アンチ・シェーダー主義!
04/12/08 21:47:24ID:c6WeYnvvまだまだシェーダも動かないような低スペックなマシンも
たくさんあります。
ソフトウェア実装に力を入れている方々、情報交換しませんか?
0694名前は開発中のものです。
04/12/08 22:02:24ID:WW1dHwS0それは底が見えるから、情報交換とか議論とかできなさそう
何をするかにもよるけど、たとえばトゥーンシェーディングとか
スキニングとかをシェーダ使わなかった場合とか
頂点バッファをロックして書き換えるのが頻繁になって
重くて現実てきじゃない
そんな低スペックグラボのマシンではカクカクポリポリじゃないと現実的じゃない
どうしてもやりたかったら、シェーダでやってることをそのままソースで書けば
いいだけだから、特別な議論も必要ないと思う
0695名前は開発中のものです。
04/12/08 22:07:06ID:ZvOIJkod> スキニングとかをシェーダ使わなかった場合とか
> 頂点バッファをロックして書き換えるのが頻繁になって
↑
馬鹿
0696名前は開発中のものです。
04/12/08 22:07:43ID:/aowmM/6を議論するスレになりました。
0697名前は開発中のものです。
04/12/08 22:11:28ID:WW1dHwS00698名前は開発中のものです。
04/12/08 22:12:22ID:ZvOIJkodやっぱり分かってない、ただの馬鹿。
0699名前は開発中のものです。
04/12/08 22:27:06ID:/aowmM/6完
0700名前は開発中のものです。
04/12/08 23:03:05ID:3qzYfJVyエフェクトファイルステートで書いてみ、スゲーつらいよ。
何書いてあるか読みづらいし。
ステートでは良いことないのよ。
0701名前は開発中のものです。
04/12/09 01:48:13ID:KBePB8OT0702名前は開発中のものです。
04/12/09 04:01:07ID:cERVxdI9(゚Д゚)ノ < シェーダ
| ⊃| \__________
| |
⊂ノ〜
∪
0703名前は開発中のものです。
04/12/09 10:22:50ID:QepYyAhGTnLなければCPUで処理されるんだからあえて使わない意味はほとんどないに等しいじゃね。
シェーダー使わなくたってどっちにしろCPU処理なんだしな。
スキニング処理なんかだとむしろ余計なバッファが要らないから同じCPU処理でも
シェーダー使うほうが速いしメモリにも優しくてなおさら低スペックにもいいだろ。
もっともそれ以前にそんな事考えるようなスペックじゃCPUがボトルネックになりそうだけどな。
まぁ日曜プログラマ風情の意見としては3DゲームをやるならGeForce4程度は買って来いと、
GeForceFx5200ですらGBASPよりも安いんですよ?とチラシの裏。
0704名前は開発中のものです。
04/12/09 12:01:01ID:yF7iPEiA頂点シェーダー対応の可否とは何の関係もない。
0705名前は開発中のものです。
04/12/09 13:30:59ID:Ua29371P0706名前は開発中のものです。
04/12/09 19:47:06ID:ZtkIdcTxマルチだか転載だか知らんが、元ネタのところじゃ一夜にしてすげーことになってるな
この前の騒動といい、最近あそこはどーかしてるよな
0707名前は開発中のものです。
04/12/09 20:41:44ID:yF7iPEiA最後にシェーダでボーンが4つしか使えないと思いこんで、それを指摘されて消えていった。
BBXでもやることは変わらない。
0708名前は開発中のものです。
04/12/09 21:39:11ID:/584CGpU馬鹿な意見とか、お節介な意見とかは構わないが、
2chのノリを他に持ち込むのだけは勘弁
0709名前は開発中のものです。
04/12/09 21:46:38ID:ra7ioJc3下の方のレスが、対岸の火事見物っぽくてワラタ。
0710名前は開発中のものです。
04/12/09 23:55:51ID:CqQJyX06「頂点シェーダが動くかどうかはグラボの性能とは関係ない。」
だからとりあえず頂点シェーダを使わない選択肢ってのはいまのところ無い
っつーことで。
で、なにやら複雑そうなんだけど、実際はそんなことない。
自分でできなきゃ、どっかの人が作ったサンプルやらコピって勉強すれば十分できるようになる。
HLSLで組まないとだるくてやってらんない。
0711名前は開発中のものです。
04/12/10 00:05:19ID:nboJzal60712名前は開発中のものです。
04/12/10 00:06:23ID:W/W3hlMT皆さんはこういうの書くときどうするの?
とりあえずステートで書く?
それとも全部シェーダー?
0713名前は開発中のものです。
04/12/10 00:12:07ID:cshQ56aM全部シェーダーの方が楽だと思う。
固定機能パイプラインは鬼面倒臭い。
誰もあんなもの使いたくない。
誰がステートの管理やるのかと。
馬鹿じゃねぇのかと。
0714名前は開発中のものです。
04/12/10 00:19:49ID:anReHWWXプログラマブルシェーダって、例えば
シーン中にライトをOn/Offしたりとか、ステートが動的に変化する場合でも
一つのシェーダを使いまわせるんですか?
それとも、ライトの数に応じたシェーダを複数用意しておいて切り替えながら使うとか、
非効率を覚悟で常にライトの最大個数用のシェーダを使うとか、
ライトは一つに制限したりとか
しなきゃいけないんですか?
0715名前は開発中のものです。
04/12/10 00:58:30ID:cshQ56aMそれはシェーダの組み方次第。
自分で自由に組めるから、組んでみて自分で最適と思うものにすればいい。
0716名前は開発中のものです。
04/12/10 01:48:52ID:W/W3hlMTやっぱそうなりますかね。
必ずしも固定だからといって対応ハードが増える訳でもないですしね。
>>714
やっぱ用途に合わせてシェーダーを多数用意しなければならないのは
今もかわってないと思う。フラグメントとかいろいろあるけど面倒臭いしね。
俺はリテラル定数で条件分け出来るシェーダープログラムを1個作って
用途別にテクニックを複数作る方法を採用している。
頂点ライティングだと最大ダイナミックライトが3つ、グローバルライトが2つの組合せで
結構多くなるな。ピクセルライティングだと双方最大1つづつの組合せ。
0717名前は開発中のものです。
04/12/10 01:50:02ID:W/W3hlMTダイナミックライトが4つ、グローバルライトが1つの間違い
0718名前は開発中のものです。
04/12/10 04:13:30ID:OzEXgDGA0719名前は開発中のものです。
04/12/10 04:35:29ID:L+RmPzsY固定機能のほうを馬鹿にする奴はそれはそれでムカつくんだが
0720名前は開発中のものです。
04/12/10 07:23:56ID:jq48CoU8うん。
>>719
技術板だ、理由を言え。
0721名前は開発中のものです。
04/12/10 10:23:46ID:PRMmN4dx0722名前は開発中のものです。
04/12/10 10:26:21ID:L+RmPzsY今は俺もシェーダ使ってるし、もう固定機能には見切りを付けてるもん。
最終目的は映像を表現することで、それが出来るなら手段は何でもいいんじゃない。
話聞いてるとどれもそう手間は変わらなさそうな内容だし、そこまで貶す必要もないと思った。
世の中頂点シェーダですらできないような頂点処理もあるわけだし、
馬鹿にするのはそういうのを無理して固定機能でやるとき位にしてやってくれw
0723名前は開発中のものです。
04/12/10 10:57:07ID:b5UiCi3W同意、まぁどっちの派にしろ、自分が慣れた方しか認めないのは見苦しいね。
固定の良いところか…ある程度決めうちできるゲームは良いけど、
アプリなんか作ってると固定の方が楽に感じることはあるかな。
(今使える)OpenGLと共用する時とか。
0724名前は開発中のものです。
04/12/10 11:03:49ID:KYyRlGH40725名前は開発中のものです。
04/12/10 13:50:58ID:evJV8sI6上げるとすれば、プログラマブルでないTnLを持ってるGPUでは固定パイプラインを使った
ほうが高速ってことはないかい。GeForce MXとかそうじゃなかったっけか。
測定したわけじゃないんで、間違ってたらごめん。
0726名前は開発中のものです。
04/12/10 16:38:27ID:Y4Ud5gjc0727名前は開発中のものです。
04/12/10 16:53:28ID:KYyRlGH4ただしCPUの空きが増えるので、使った方が負荷は軽くなる。
0728名前は開発中のものです。
04/12/11 20:11:30ID:ENo3zpOh2D描画にDrawPrimitiveUpを使っています。
基本的な動作としてはオブジェクトごとに
動きを計算し
行列の計算→D3DXMatrix系の関数
描画時に
SetTransform → DrawPrimitiveUp
を毎フレーム繰りかえすという形でいいんでしょうか?
無駄が多い気がするんですがほかにいい方法は思いつきません。
0729名前は開発中のものです。
04/12/11 20:26:22ID:fhqnR+WK明らかに無駄だな。
必要ねーぞ。
マジで。
SetTransform必要ないだろ。
だってTL_VERTEXとかそんなんじゃねーの?
0730名前は開発中のものです。
04/12/11 20:30:06ID:Fu3sSY9f上でも議論があるが、Up じゃなくて UP な。
3Dの複雑なモデルならともかく、2Dのキャラクタで、
DrawPrimitie系メソッドを「オブジェクトごとに」呼び出すのはいけてない。
UP系を使ってるんなら、
一つの頂点配列に複数のオブジェクトで使う頂点をまとめて格納しておいて、
頂点の座標を全て書き換えてから一度だけDraw。
0731名前は開発中のものです。
04/12/11 20:47:23ID:RsIq+yY4全体のパフォーマンスは大して変わらない。
細かいことを気にしている暇があったら、まず全体を完成させて、
後からチューニングしても遅くない。
0732728
04/12/11 20:51:15ID:ENo3zpOhありがとうございます。
他のやり方があるということがわかっただけでもよかったです。
全体完成させてからいろいろ改良することにしてみます。
0733名前は開発中のものです。
04/12/11 21:10:24ID:fhqnR+WK固定機能パイプラインのときって2D描画(3D空間に無い)ってどうやってやってたんだっけ?俺。
いまのソースだとシェーダに値を渡してるけど、固定機能だと値を渡すようなものってないのか?もしかして。
頂点バッファを毎フレームごとにロックしたりしてたんだっけ?いや、それは無駄だよな。うーん?ん?
0734名前は開発中のものです。
04/12/11 21:17:01ID:Gc6vRMJF0735名前は開発中のものです。
04/12/12 00:18:36ID:u0O7CTPqすこし昔の話だが
0736名前は開発中のものです。
04/12/12 01:17:45ID:tfjyzDT/DirectX9 SDKと日本語ドキュメントをDLして
インストールしたところ、日本語ドキュメントは
SDKとは別のフォルダへインストールされました。
で、日本語ドキュメントのインストールされた
フォルダを見てみると、拡張子がHx○というファイル
が複数できましたが、クリックしても実行できない
もののようです。このヘルプはどうやって見るもの
なのでしょうか?開発環境はVC++.netです。
0737名前は開発中のものです。
04/12/12 01:39:20ID:FwlKHgFV英語ドキュメントのショートカットのプロパティみてみ
拡張子何になってる?
0738736
04/12/12 02:28:00ID:tfjyzDT/英語ドキュメントのショートカットとはどこにあるのでしょうか?
SDK本体のフォルダの中のDocumentationというフォルダの
中には英語ドキュメントらしきものがありますが、ショートカットは
ありません。ここには、Hx○がいくつかと、chmというコンパイル済み
HTMLファイルがあります。これはクリックして読めるようですね。
0739名前は開発中のものです。
04/12/12 02:42:29ID:FwlKHgFV>英語ドキュメントのショートカットとはどこにあるのでしょうか?
スタート→プログラム
0740名前は開発中のものです。
04/12/12 09:42:01ID:BNsUi8qI勝手にアンチエイリアシングが掛かってしまうようなのですが
何が問題なのかわかりますか?
この現象が起こるのは今のところ Radeon9800PROだけです。
スクリーンショットを撮るとボケてない画像が撮れます。
Windowモードならボケないようです。
0741名前は開発中のものです。
04/12/12 11:29:17ID:NVOf1hrqダウンロードしインストールしようとしましたが、何回やっても
インストール進行状況の緑のバー(?)が途中で左へ戻ってしまい、
your system has not been modified to complete installation at another time, please run setup again.
と表示されて失敗してしまいます。
いろいろヘルプドキュメントやネットで調べましたが解決方法はわかりませんでした。
OS は XP Home Edition Service Pack 2 です。
0743名前は開発中のものです。
04/12/12 13:41:45ID:yiVn8EQzみつかりにくいんだけどたしかどっかにあったよ。
拡張子はchmだからマイコンピュータを拡張子で検索かければそのうちあたんじゃねぇの?
0744名前は開発中のものです。
04/12/12 14:03:17ID:lh5zcFYtDX9_Oct04_JpDoc.exe を展開するとその中に入ってる。
ちなみに同じフォルダに DirectX9Oct04JpnDoc.msi ってのがあって
これをインストールすると、確かに *.Hx○ってファイルができるんだけど
これって何なんだろうね。自分はアンインスコした。
0745名前は開発中のものです。
04/12/12 14:32:28ID:JZcZNH0C統合環境からF1でヘルプを見た時に、DX9用のヘルプが出るようになる。
MSDN用。
0746名前は開発中のものです。
04/12/12 14:56:21ID:tfjyzDT/見れないということでしょうか?
つまりは、いらないってことか。
0747740
04/12/12 15:30:54ID:BNsUi8qI手元に再現する環境がないので色々面倒です・・・。
EFZは「640*480で起動」にするとボケないが
320*240で起動するとダメだというので
単純に解像度を640*480にしてみたんですが、解消されず。
うーん、困った。
0749名前は開発中のものです。
04/12/12 21:37:10ID:1/NB2K9W749 :デフォルトの名無しさん :04/10/24 21:08:30
次はDecember2004である、に一票。
10月の段階で言い当てるとはすげーな。
ttp://www.microsoft.com/downloads/details.aspx?FamilyId=4E825A37-0C94-4421-9EC8-156E52525D11
0750名前は開発中のものです。
04/12/12 22:00:40ID:u0O7CTPq本人ならかわいいもんだが
それはともかくキタ━━━━━━(゚∀゚)━━━━━━ !!
0751名前は開発中のものです。
04/12/12 22:37:47ID:FwlKHgFVアンチエイリアス?
バイリニアじゃなくて?
D3DTEXF_POINT(だっけ?)つかってもだめってこと?
0752740
04/12/12 23:03:56ID:BNsUi8qIそれ以前の問題でした・・・
ドット数比が5:4の液晶ディスプレイ使ってるのが原因でした。
画面サイズを変えないでD3DTEXF_POINTつかって
引き伸ばし表示するモードをつけることになりそうです。
0753名前は開発中のものです。
04/12/13 00:00:08ID:OHILwBcGPresent(&src, &dst, hWnd, NULL); で
srcの整数倍した矩形を dst に設定してみたら
D3DTEXF_POINTを指定してあってもエッジがボケてしまいます。
この部分でバイリニアフィルタが掛からないようにすることは可能でしょうか?
0754名前は開発中のものです。
04/12/13 00:16:23ID:Yp5fFNZwよくわからんが、テクスチャの領域外をエッジのに指定するフラグなんだっけ?
それつかってみたら?
0755名前は開発中のものです。
04/12/13 00:37:02ID:O19OklazRPGなどのゲーム中に出せるメニュー画面(戦闘中・フィールド)についてでしゅが
1.スプライトで表示
2.UV座標に応じて4つの頂点を指定して表示(rhwの設定のやつ)
3.カメラ設定に応じて4つの頂点を指定して表示(座標変換有り)
の3つが僕の現在ある知識ではできるのでちゅが皆さんはどれ使ってましゅか?
他に方法あったりしたらそれも教えて欲しいでチュ
0756名前は開発中のものです。
04/12/13 00:46:29ID:4OFGfkHNゲームによっては
半透明のメニュー画面があるし
他の人がどうしてるのか、気になるなぁ
BBX見たらスプライトでやってる人も居るようだ
0757名前は開発中のものです。
04/12/13 01:02:03ID:Yp5fFNZw1と2は同じことだろ?
あ、D3DXSPRITEとかいうやつか
あんなん使うな
2Dのメニュー表示だったら3の意味はなし
0758名前は開発中のものです。
04/12/13 01:26:33ID:w/QQwN3S0759名前は開発中のものです。
04/12/13 01:36:39ID:Yp5fFNZwさすがにそれはわかって…るよな?>755
0760名前は開発中のものです。
04/12/13 03:12:40ID:4OFGfkHNためになった。
でも、Spriteを触ることは無いだろう
0761753
04/12/13 10:45:56ID:65Upxz8jちょっと探した感じでは見つからなかったです。
今回の件とはちょっと違うかな・・・?
IDirect3DDevice8::Present の説明に
「必要に応じて、転送元矩形内のピクセルをターゲット
ウィンドウのクライアント領域の転送先矩形に転送するために
拡大処理が適用される。」
と書いてあるので、この部分の拡大処理でバイリニアフィルタが
適用されているようですね。
ここを制御できればいいんですけど・・・。
0762753
04/12/13 16:57:51ID:65Upxz8jレンダリングターゲットをテクスチャにして描画
⇒テクスチャからバックバッファに拡大して書き込み
⇒Present(NULL,NULL,NULL,NULL)
とすることでうまく行きそうな予感・・・?
#今まではバックバッファに直接描いてました。
Present()内部で行われる拡大処理を制御するのは無理なのかな。
0763名前は開発中のものです。
04/12/13 21:45:53ID:CpqQPaPGあとはベタだが0.5ピクセルずらして張る
サイズ256だったら一番端のUVは
1,0じゃなくて
1.0f - (0.5f / 256.0f)
0.0fのところも
(0.5f / 256.0f)
とか
0764753
04/12/13 22:08:26ID:OHILwBcG0.5ドットずらす方法は既に実践済みなんですよ。
結果はずらしてもずらさなくても同じでした。
762に書いた方法で実装してみたら結構遅くてショック。
0765名前は開発中のものです。
04/12/14 02:35:51ID:Uw1p0s/Zつい最近まで流行ってた、TOWNSとかのハードウェア0.5ドットスクロールのことかと思った。
あれは滑らかだったからなー。
0766名前は開発中のものです。
04/12/14 17:10:23ID:52nIwGgvレースゲーム中のメーターと針を表現したいのでちゅが、
メーターはRHWを設定するので描画してるんでちゅが針のほうをRHWで
描画してるんですがRotationXでしたっけそれでは回転できないんでちゅが
どうすれば針を回せますか?
■ このスレッドは過去ログ倉庫に格納されています