- 1 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 16:56:40 ]
- ※回答する人も、質問する人も必ず読んでください
これらに当てはまる人のための質問スレです。 1.C/C++は多少理解している。 2.最近DirectXを始めたばかり 3.SDKを見ても、Googleで検索しても、いまいち理解できない人 4.余計な雑談は不要ですよ 【 回答してくださる方 】 ・ できるだけ優しく質問に答えてあげてください。 ・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。 「ググれ」「SDK見れ」以外の回答でおながいします。 ・ 神ですら理解不能な質問は無視して下さい。 【 質問する方 】 ・ どんな事で躓いているのか明確にしよう。 ・ 長くならないなら躓いている部分のコードを晒してみれ。 ・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。 ・ 回答して貰ったら、出来るだけお礼もしよう。 【C++】 DirectX初心者質問スレ Part14 【C】 pc11.2ch.net/test/read.cgi/tech/1189257706/
- 136 名前:127 mailto:sage [2007/12/23(日) 21:10:44 ]
- >>131
>>131 ゲーム制作初心者です。プログラミング歴も1年程度です。 ただ、Javaで簡単なシューティングゲームを作ったことはあるので、 シューティングゲームのアルゴリズムに関してはだいたいどうやるか決めています。 分からないのは音の精密な制御で、ゲームの進行と正確にシンクさせる部分です。 その部分をどうやっていいのか、イマイチ当たりがつかない状況です。
- 137 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 21:19:44 ]
- >>136
入門書の枠からは外れてるかな。 再生時間'(再生位置)を取得させれば良いだけの話だけど、 この手のゲーム以外で使うことはほとんど無いため扱わない。 ストリーミングバッファの解説が載っていればそれを応用すれば出来ることに気付くかも知れんが。
- 138 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 23:48:37 ]
- 広大なマップを作りたいんですが、バカ正直にモデルを作って読み込んだら物凄く重たくなってしまいました。
程よいメッシュ数で一定区画毎のモデルを用意して、必要分だけ読み込んで表示するのでしょうか??
- 139 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 00:16:12 ]
- >>138
東京から大阪へ行くのに新幹線で行くのでしょうか? という質問をされてどう答えろと。
- 140 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 00:31:31 ]
- 東京の六本木を歩いてるだけのシーンでも、ニューヨークとかパリとか地球全部描いてるわけか?
そんな恐るべき無駄は止めた方がいい
- 141 名前:138 mailto:sage [2007/12/24(月) 01:09:58 ]
- >>139
?? 夜行バスでも行ける、ってことですか?? でも、新幹線で行けるならそれに越したことはないですし、>>138の方法でイイってことかな・・・。 >>140 そ、そんなことはしません(汗) 今までゲームをしてきて、当たり前のように見てきた広大なフィールドを実現するのがこんなにも たいへんなことだなんて・・・ ゲーム開発者の人を改めて尊敬します。 ttp://www.acecombat.jp/ace6/feature/images/ace6_image14.jpg これとか、すごすぎです(;´д`)
- 142 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 01:20:10 ]
- 地面はまっ平ら
木はビルボードにしか見えないんだが
- 143 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 01:32:33 ]
- ワラタ
- 144 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 08:39:45 ]
- >>141
アプリケーションに正解なんて無いぜ? >程よいメッシュ数で一定区画毎のモデルを用意して、必要分だけ読み込んで表示するのでしょうか?? つまり>>139の例で言うと新幹線で行くのも正解だし、バスで行くのも正解、歩いていくのも正解だろ。 自分の案があるならそれを試した上で軽くなる方法が無いか聞かないと。
- 145 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 10:02:56 ]
- DX9 2007Nov .Net
HLSLについての質問です。 以前PassがBeginPassとEndPassに変わったと言うやりとりがありましたが 上がっているHLSLのサンプルがことごとくエラーを出して正常に実行できません。 サンプルにSDKのバージョンを合わせれば動くでしょうが、そこから最新のバージョンに動かすように修正が出来ませんでした。 現在のバージョンで動くHLSLのシンプルなソースや解説をしているサイトは無いでしょうか。 せめてHLSL部分だけでもあればいいのですが、fxファイルが正常に読み込めエラーが出たりとか・・orz
- 146 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 10:12:49 ]
- きちんとヘルプが付いてきているだろ。
それで何が問題なんだ?
- 147 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 10:53:43 ]
- >>145
別にHLSLの部分は何もかわってないぞ fxファイルが読み込めないのは どっかに構文エラーがあるからじゃね?
- 148 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 11:13:46 ]
- >>145
>上がっているHLSLのサンプル どこのサンプルだよ?
- 149 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 11:44:39 ]
- >>148
Pass()のままのところもあります(修正してもメモリ周りでエラーが出たり) t-pot『HLSL』 (画像の下辺りにサンプル) ttp://tpot.jpn.ph/t-pot/program/72_HLSL/index.html DirectX9での上位レベルシェーダー言語(HLSL) (最下にサンプル) ttp://www001.upp.so-net.ne.jp/y_yutaka/labo/directx/shader_hlsl.html Shader.jp - Articles-第4回「HLSL スタート」 (上から1/5程の位置にある赤字文の下にサンプル) ttp://www.shader.jp/xoops/html/modules/xfsection/article.php?articleid=14 その7 HLSLによる極短レンダリング:サンプルプログラム (画像の下辺りにサンプル) ttp://marupeke296.com/DXPSSMP_No7_HLSLRendering.html
- 150 名前:138 mailto:sage [2007/12/24(月) 12:31:45 ]
- >>144
分かりました。 ありがとうございました。
- 151 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 21:55:38 ]
- >>149
俺もうごかねぇや。 てか自前のでさえ動かなくなってた。 詳しく調べてないから分からんが仕様が数箇所で変更されてエラーが複雑化しているように思える。 ぶっちゃけ去年辺りのSDK使えばいいんじゃね?
- 152 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 22:36:33 ]
- VC++2005、windowsSDK、DirectX9 SDK(October 2006)の環境で
2Dの簡単なゲームを作ろうとしている所です フルスクリーンモードでSetDialogBoxModeを使用している 全ソース付きのサンプルプログラムはどこかにありませんでしょうか? できればフルスクリーンモードでのメニューバー表示のサンプルがあると助かります。 一応自分でもこれを実現するために こちらの方のページを参考にしてほぼ丸写し状態でやってはみたのですが、 どうもメニューが表示されません。 ttp://www.geocities.jp/is3000nx/reading/dev/dev.html ただ、SetDialogBoxModeを呼び出しても呼び出さなくても、 メニュー自体は存在しているようで、マウスで画面の上のあたりを クリックなどしますと、瞬間的にメニューが現れ、メニューコマンドが実行されますが^^; こちらに書いていない部分(DX初期化関連、ウィンドーモード、メッセージ処理etc…) などで何か気をつける点でもあるのでしょうか???
- 153 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 22:48:55 ]
- あ、VC++2005はExpressEditionです。よろしくお願いします
- 154 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 23:54:06 ]
- 板ポリゴンとかにテクスチャを貼ると、テクスチャが何故か右下にずれるのですが、何故なのでしょうか?
どうすれば直りますか?
- 155 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 00:28:43 ]
- >>154
何かを間違っているから。
- 156 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 05:24:58 ]
- どうすれば直りますか?
- 157 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 05:29:57 ]
- 間違いを修正する
- 158 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 05:49:02 ]
- どうすれば間違いを
- 159 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 06:32:38 ]
- どうやって貼りましたか?
- 160 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 08:12:48 ]
- 誘導
つttp://pc11.2ch.net/test/read.cgi/tech/1187922645/
- 161 名前:デフォルトの名無しさん [2007/12/25(火) 09:11:08 ]
- DirectX9.0bSDK(2004October)付属サンプル2の、虹色の三角形表示プログラムについての質問です。
改造して四角形を表示させたいのですが、うまくいきません。 CUSTOMVERTEX vertices[] = に { 50.0f, 50.0f, 0.5f, 1.0f, 0xff0000ff, }, を追加することで頂点を4つにし、 Void Render()内の g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 1 ); を g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 ); にすることで、2つの三角形を連続して描画し、結果的に四角形になるかと思ったのですが 三角形一つしか表示されません。 また、 g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 1 ); を g_pd3dDevice->DrawIndexedPrimitive( D3DPT_TRIANGLESTRIP, 0, 0, 4, 0, 2 ); にすることで上記と同じ効果になるのかと思ったのですが、今度は三角形自体消えてしまいます。 どうしたら四角形が表示されますか?
- 162 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 09:26:56 ]
- カリングされてるんじゃないかね?
SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE)
- 163 名前:161 mailto:sage [2007/12/25(火) 10:00:08 ]
- できました!
あと頂点の順番?がおかしかったみたいで |X| ←こんな形になったけど、頂点入れ替えたら四角形になりました! ありがとうございます!  ̄
- 164 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 10:35:15 ]
- は?
頂点の順序が間違ってたのが原因、って事?
- 165 名前:161 mailto:sage [2007/12/25(火) 10:52:03 ]
- >>164
三角形が一つしか表示されないという問題は ->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); で解決したんですが、今度は頂点の順番がおかしいせいか欠けた四角形になったんです。 /| と |\ の三角形の組み合わせで |X| こんな形に  ̄  ̄  ̄
- 166 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 14:42:39 ]
- >>161
どうでもいいけどoct2004は9.0cだったと思うが
- 167 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 15:46:06 ]
- 疑問に思ったんだけど、四角形を描画する場合、頂点バッファを作ってDrawPrimitive()で描画するのと、
作らないでDrawPrimitiveUP()で描画するのとどっちが速いですか? 頂点バッファは頂点数が多いほど効果を発揮すると聞いたような気がするのですがどうなのでしょうか?
- 168 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 15:57:45 ]
- 疑問に思ったんだけど、なんで自分で試さないんですか?
- 169 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 20:21:12 ]
- >>167
DrawPrimitiveUPのほうが早いですよ。 多くの方が様々なOSやビデオカードで検証済みです。 とか言ったらこいつは何も考えずにDrawPrimitiveUP使うんだろな。
- 170 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 22:21:13 ]
- >>169
ありがとうございます。 やはり、頂点バッファは頂点数が多いほど効果を発揮すると言う事でしょうか?
- 171 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 22:23:17 ]
- >>170
そうです。Microsoftが検証済みです。
- 172 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 01:31:37 ]
- >>152
私も同じ事やろうとしたけど、どうも上手くいかないですね でもこの人の作ったゲームだと実装されているっぽいし… 本当にSetDialogBoxModeを使ってるのかなぁ この関数使ってまともにメニューが表示できた人っていますか? というかフルスクリーンのメニュー表示はみなさんどうやってます?
- 173 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 01:40:45 ]
- ステートブロックがいまいち良く理解できません。
1.普通のステート変更を最小限に抑えて変更する 2.(CreateStateBlock()で)キャプチャしたステートブロックを毎回適用する 3.カスタムステートシーケンス(BeginStateBlock()〜End...()まで)を適切に使用する と三つのやり方があると思うんですが、 何も考えずに2.のやり方でも効率的にできるんでしょうか。 それとも多少のやりくりは必要なんでしょうか。 ピュアデバイスだとステート変更は変更するたびに行われるんでしたっけ? ステートブロックの仕組みとかがわからないのでちょっと迷ってます。
- 174 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 02:30:21 ]
- 効率いいかなんてやってみればわかるだろ。アホか
- 175 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 02:47:54 ]
- このスレっていったいどんな質問なら答えてくれるの?w
- 176 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 03:02:27 ]
- パラドックス
- 177 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 04:01:19 ]
- 初心者ホイホイなのかな
- 178 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 07:20:42 ]
- 初心者であろうがなかろうが、自分で試せるものを試さないってのは単なる怠慢だと思うが。
やり方が分からないんであれば、どっちが効率的?などと聞くんじゃなく素直にやり方そのものを質問すべき。
- 179 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 13:52:41 ]
- このスレいらねーなwwwww
- 180 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 14:13:55 ]
- レンダリングステートを変更する事は、結構重いコストとして扱われるので、
Dx6まではコロコロ変化させずに、同じレンダリングステートのメッシュやターゲットを纏めて レンダリングしたり、ステートの変化が最小になる順番でステート郡をレンダリングしてたりしたんだけど、 ステートブロックを使えば、複数のレンダリングステートの変化を一度にデバイスに適用出きるので、 上記の事をあまり意識しなくて良いレンダリングループが作れるようになったわけ。 でも、別にレンダリングするターゲットやステートの種類によってはステートブロックを使わなくても そんなに処理が重くならないのも事実で、自分が作成しているプログラムでステートの変更が 重い処理だな、と思ったらステートブロックを試してみれば良いんじゃないの? GPUとGPUへのバスの帯域、レンダリングするプリミティブの数、ステートの変更量といった要因が あって、トータルで考える必要があるから、なんでもかんでも管理するのは効率的ともいえないし、 大規模エンジンを作るのに、ステートの管理コストを嫌って管理しないのも効率が逆に悪くなるし。 ケースバイで。効率的ってのは目的が無いと決定しない項目だから。
- 181 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 14:22:58 ]
- >重い処理だな、と思ったらステートブロックを試してみれば良いんじゃないの?
そうなんだが、それを自分で試そうとしない輩が多すぎるな
- 182 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:19:34 ]
- VisualC++2005、DirectX9.0c SDK、Windows SDKの環境です。
キャラクターのアニメーション等をさせる場合、 画面を毎秒60とか30フレームとかで更新、のような処理をしなければならないと思うのですが その毎回の画面の更新タイミングはどのような手順で取るのでしょうか
- 183 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:38:29 ]
- >>182
自分で試せ
- 184 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:49:08 ]
- 何を試せばいいのでしょうか
- 185 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:57:16 ]
- 「ゲームループ」でぐぐれ
- 186 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:58:02 ]
- >>184
それを自分で試せ
- 187 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 20:00:24 ]
- 少し荒れてる状況で質問したのはタイミングが悪かったな
- 188 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 20:06:30 ]
- >>187
自分で試せよ
- 189 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 20:19:19 ]
- >>188
>>187に言うなよ!w
- 190 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 20:21:58 ]
- マルチコア設計の描画エンジンだとステートブロック使うのは問題外の糞www
というnVidiaあたりのプレゼン資料なかったっけ
- 191 名前:180 mailto:sage [2007/12/26(水) 20:58:26 ]
- >>190
まあ、実はステートブロックは、固定パイプライン時代の産物だから、基本的に レンダリングステートなんてほとんど変えずに、シェーダでやれってのがDirectX9以降の 正しいGPUの使い方なんだと思う。 こんなの、実は悩むところじゃないと思うな。 固定パイプライン使ってても、レンダリングステートの変更なんて大した 負荷になってないっぽいもんね。所詮DirectX7時代の話だし。 一々ステートブロック作らなくても十分高速に動いてるし。 ステートブロックの解説も怪しいところあるから、普通利用を避けるんじゃないかな。 >>173は何故こんな事に疑問を持ったのか、謎だ。 (どこかの処理で実際に遅くなった、とかならわかるけど。)
- 192 名前:173 mailto:sage [2007/12/26(水) 23:38:39 ]
- え、いや、普通な感じで
実装前にセオリーとか聞きたいなって…荒れさせたようでごめん 忘れて >>180さん、なんかすいません…とても参考になりました…どうもでした >>180さん、ごめん、俺のせいで
- 193 名前:173 mailto:sage [2007/12/26(水) 23:39:49 ]
- >> >>180さん、ごめん、俺のせいで
>>182さん、ごめん、俺のせいで の間違いです ホント申し訳ないw
- 194 名前:182 mailto:sage [2007/12/27(木) 00:22:56 ]
- >>185
ありがとうございます。_tWinMainの中でtimeGetTimeを使って 60分の1秒を数える方法を使ってみました Windowsゲーは同期とかはキニシナイでいいんでしょうかね >>193 いえいえキニシナイでください
- 195 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 02:19:50 ]
- >>194
いや、同期取らないと駄目だろ。
- 196 名前:182 mailto:sage [2007/12/27(木) 02:55:23 ]
- え?そうなんですか?>>195さんはどういった手順でやってるんでしょうか
- 197 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 03:00:18 ]
- 俺は可変フレームレートのが好きだな
要は1フレームでどんだけ時間が進んだかで アニメーションの進行速度を変えればいいわけだから そんでフレームの終わりにフリップすれば
- 198 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 03:15:47 ]
- >>197
あれってどうやって実装してるの? フレーム間の時間をグローバル変数にでも格納して参照するんだろうか。
- 199 名前:デフォルトの名無しさん [2007/12/27(木) 04:22:17 ]
- DirectX9SDKを入れて、バージョンは8で開発したいんだけど、d3dx8.hとかないのね
d3d8.hとかはあるのに。 どうすればいいんだろ。どっかでDirectX8SDKを見つけてこないと駄目かな?
- 200 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 04:41:19 ]
- 9のOct2004だけど、d3dx8.hあるよ。
- 201 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 07:28:08 ]
- 仕事でどうしても必要じゃなきゃ9使った方がいいと思うけど。
まあ9x系対応とかだとDx9のOct2006までじゃないとダメらしいが
- 202 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 10:23:51 ]
- >>199
リリースノートくらい読めよ・・せっかく日本語に訳してくれてるんだから。 ------ この DirectX SDK には次のコンポーネントは含まれていません Direct3D8 およびそれ以前の全てのバージョン Direct3D RM ・・・・・・ これらのコンポーネントを使いたい開発者は、 MSDN から August 2007 DirectX SDK をダウンロードする必要があります。 ~~~~~~~~~~~~~~~~~~~~~~~~~
- 203 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 10:26:15 ]
- まあオーガスト2007だと8で作る意味が全くなくなるけどな
- 204 名前:デフォルトの名無しさん [2007/12/27(木) 11:12:48 ]
- DirectX9でゲームを作ってたんだけど、DirectX9の独自の機能使ってないし、誰でもすぐに遊べる様にしたいからDirectX8にしたかったのさ。
>>200 >>202 サンクス。 とりあえず古いバージョン拾ってみよう。古いバージョンで上書き出来ればいいけど >>203 そうなの? 結局XPの初期状態とかで動かないのかな?
- 205 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 11:56:09 ]
- >>204
だからリリースノートを読めと。 ---- すべてのプラットフォームでのインストール上の注意 ・現在の DirectX SDK をインストールする前に、DirectX SDK の前バージョンを削除することを推奨します。 ---- どのバージョンがどのOSに対応しているかも全てリリースノートに書かれている。
- 206 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 12:19:57 ]
- もう、ほっといた方がいいかと。
一度受けた注意を怠るわ、質問している立場なのに偉そうだわ。 d3dx8.hの話にしても、>>104-105 で出てた話題なのに、 同じスレ内ですら検索かけてないし。
- 207 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 14:19:57 ]
- 2Dの描画で描画数がかなり多くなるため(1フレームに3000程度の数字テクスチャを描画)頂点バッファを利用して
1フレームに頂点バッファ一括ロック→memcpy→アンロック→DrawIndexedPrimitive としているのですが、3000個描画するとシーン時間が6〜7ms程掛かってしまいます(それなりに良いスペックのPCで) 6000ポリゴン程度の描画でこんなに時間が掛かるはずがないと思うのですがやり方が間違っているのでしょうか?
- 208 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 14:40:20 ]
- なんかmemcpyがボトルネックになってそうだけど
どの処理に一番時間がかかってるのか もうちょっと絞り込んだ方がいいんじゃない?
- 209 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 14:43:44 ]
- まず対照実験として、画面をクリアするだけで何も描画しない場合の速度を計るべきだと思う。
- 210 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 16:53:43 ]
- ロック/アンロックが臭いと思うな。変なロックは速度に影響でかいから。
ロックを止めて、ダミーバッファにmemcpyする処理に置き換えてフレームレートを計測したら? あと、頂点バッファは、まとめてる?ロックがボトルネックなら、頂点をまとめて1フレームにロックする回数を 1回にしてしまった方が良いよ。 それと、毎回コピーする頂点の計算処理は重くない?
- 211 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 20:04:19 ]
- ところで、そろそろ>>152の質問に回答してくれる方はおりませんでしょうか?
ネットを漁り、アキバでDirectX関連の参考書を読みふけりましたが どこもこの問題についてはあえて避けてるようにしか思えません SetDialogBoxModeをマスターされました神様、いらっしゃいましたらお願いします とりあえず、フルスクリーンでメニューとダイアログが表示できるようになればいいので いい解決方を知っている方でも大歓迎です
- 212 名前:デフォルトの名無しさん mailto:age [2007/12/27(木) 20:05:35 ]
- 斜め投影した場合、投影されたCGがあえて歪んで見えるようにしたいです。
どこをいじればいいか教えてください。
- 213 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 20:16:28 ]
- >>211
全ソース付のサンプル、か。 google code search で SetDialogBoxMode で検索したら結構引っかかったんだけど、やってみた? 検索結果の始めのほうはラッパのヘッダとか意味ないのばっかだけど 結果の後の方まで見てみると結構有用っぽいのがちらほら。Lunaとかも引っかかってたり。 ただライブラリ系ばっかでサンプルになるかどうかは分からん。
- 214 名前:207 mailto:sage [2007/12/27(木) 20:43:50 ]
- レスありがとうございます
やはり描画部分が結構重いみたいです… 1フレーム当たりの時間が ロック/memcpy/Drawを一切しない → 80μs ロック→16000頂点分memcpy→アンロックでDrawしない → 450μs 一つ上の条件でスプライトを2000個描画 → 3210μs いずれも他の描画以外の処理を含む時間で、memcpyは実際には描く分だけのサイズで行うので最悪条件でテストしています
- 215 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 21:46:38 ]
- ロックしない/memcpyしない/アンロックしない/Drawする
っていうのも測った方がいいと思う。 頂点データがないのはアレなんで、計測外で初期化時にでも放り込んでおいて。
- 216 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 21:56:46 ]
- PIXで、実際どのAPIが時間食ってるか調べてみたら?
GPUが忙しいのか、CPUが忙しいのか、プログラムが悪くってどっちも 遊んでる状態になってるのか、それを切り分けないと始まんないと思う。 あと、スペックに対しての期待値がどれくらいで、3210はどの位そこから遅いのか? SDK付属ドキュメントの「Direct3D API 呼び出しの正確なプロファイル」あたりは一回読んでる?
- 217 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 22:23:55 ]
- >>211
今てきとーに使ってみたら一応表示はできるみたいだがのー。 D3DPRESENTFLAG_LOCKABLE_BACKBUFFER忘れてるとかそんなオチじゃないよね? しかし案の定XPとVistaじゃ挙動違うっぽいし、あんまし深入りしたくねぇなこれ。
- 218 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 22:35:28 ]
- Dialogは普通に表示出来たけどメニューは
あんまりメリット感じないから使った事無いや。
- 219 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 23:35:17 ]
- PIXの使い方がわからねぇ
- 220 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 02:02:20 ]
- おれもおれも
まぁちょっとだけならわかるけど つっこんでは分からねぇ
- 221 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 03:43:50 ]
- 助けて
頂点テクスチャフェッチのためにVertexShaderでtex2Dlod(Sampler,float4(In.tex,0,1))すると真っ黒になってしまいます float4(In.tex,0,0)、float4(0,0,0,1)などでも同様でした テクスチャのフォーマットはA32B32G32R32Fで、SM3.0にも対応しているのですが tex2Dlodなどでぐぐってみたところ、MSのフォーラムなどで似たような症例がありましたが解決策がよくわからず・・・ 原因に何か心当たりある方はいないでしょうか?
- 222 名前:221 mailto:sage [2007/12/28(金) 04:29:27 ]
- ちなみにサンプラーは
MinFilter = Point; MagFilter = Point; MipFilter = None; AddressU = Clamp; AddressV = Clamp; です
- 223 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 12:36:06 ]
- 等高線の形どおりに厚紙を切って重ねると、立体地図が作れますよね
この立体地図をプログラムで描画したいのですが、躓いてしまいました 今手元には等高線が書かれた白地図があるので 「等高線ごとに領域を分割し、各々に高さを与える」 といった処理にしようと思ったのですが、等高線ごとに領域を分割というのがどうしたらよいのか見当がつきません このような処理の実現のしかたを教えてください よろしくお願いします
- 224 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 13:06:56 ]
- ダイレクトX関係ないじゃんといいたいが
・等高線が作る一つの輪を1リングとし、リング毎の高さと領域情報を保持 ・高さの同じリングをまとめたものを1グループとして管理する ・グループ毎にY座標を変えて表示する でいいだろ もちろん、外壁も表示するのには各リングの輪郭線から頂点を自動算出して 外壁ポリゴンも作らんといかんけど
- 225 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 14:00:34 ]
- すみません
3次元空間内の物体をピック処理をして、マウスの移動量で移動させたいのですが ピックするところまでいったのですが その後マウスの移動分動かすのはどうしたらいいのかわかりません。 初期値→移動後のマウス座標を得て、それをどのように3次元空間の座標に戻すのか 視点が回転したときに、xyzの移動量と向きはどうしたらいいのか この二つがわからなくて壁に当たってしまいました。 ご指南お願いします
- 226 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 15:16:38 ]
- >>225
視点から注視点の面上にあるポイントを結んだ物がマウスポインタのベクトル。 そのベクトルを対象オブジェクトまで伸ばし、ベクトルが変化した分だけ移動させればいい。
- 227 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 16:45:15 ]
- すいません>>212もお願いします。
- 228 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 16:48:14 ]
- | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
| お断りします | |________| ハ,,ハ || ( ゚ω゚)|| / づΦ
- 229 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 17:02:14 ]
- >>227
質問が抽象的すぎ >斜め投影した場合 >投影されたCG >歪んで それぞれ具体的に
- 230 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 17:16:14 ]
- >>212
誘導 つttp://pc11.2ch.net/test/read.cgi/tech/1187922645/ 自分の質問を読んで、他人が内容を把握出来なければ、 ただでさえ少ない回答が0になるだけだよ。 >>223 >>224 もし、等高線毎に外周形状のみ与え、後は自動って言うのなら、 等高線が穴を含む形状の場合にめんどくさくなると思う。 形状に含まれる穴の数(トポロジー)に応じて、輪郭に対する 三角分割のアルゴリズムが変わるんじゃないかな? 穴が無ければD3DPT_TRIANGLEFANで外周頂点を与えれば良いので楽だが・・。
- 231 名前:224 mailto:sage [2007/12/28(金) 17:42:08 ]
- >>230
山の事しか考えてなかったな 穴がある形状を考えるのを忘れてた まあ、そもそも論として線だけ書かれたデータをそのまま読み込んで 処理しようとすんなら無理があるわな
- 232 名前:デフォルトの名無しさん [2007/12/28(金) 18:33:17 ]
- 頂点テクスチャフェッチ使えばできる
等高線の領域ごとにハイトデータで塗って 細分化した平面ポリゴンに適用すればできる 線のみからでもハイトデータを領域の関数で割り当てればできなくもない 自分ができないだけなのに威張ってるプログラマってカコワルイよね
- 233 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 19:39:05 ]
- すみません、始めたばかりのところで理解できないのがあるのですが
デプスバッファの深度を書き込む/書き込まない というのがあったのですが、そうすることでどうなるのでしょうか デプスバッファ、というバッファ(1枚?)にZ値を書き込むというのはわかったのですが 書き込まないと、そこはどうなるのでしょうか? いまいち何をしてるのか、したいのかが把握できなくて
- 234 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 19:39:36 ]
- 抽象的すぎてすいませんでした。
Xファイルを読み込んでCGを画面の中央に描画しているのですが、 そのCGを映しているカメラの位置をキー操作で変更できるようにしています。 で、カメラの位置を変更した場合に、 www.beamax.co.jp/Projec/PROJECframe.html の「斜め投影」の項にあるように歪んでみえるようにしたいのです。 D3DXMatrixIdentity(&m_view); D3DXMatrixLookAtLH(&m_view, &D3DXVECTOR3( cameraX, cameraY, cameraZ),//カメラの位置 &D3DXVECTOR3( 0.0f, 0.0f, 0.0f),//カメラの向き &D3DXVECTOR3( 0.0f, 1.0f, 0.0f));//カメラの傾き pD3DDevice->SetTransform(D3DTS_VIEW, &m_view); 一部ですが今こんな感じでカメラ配置をしています。 cameraX,cameraY,cameraZ はキー操作で増減するようにしています。 プログラムは、ソフトバンクの「DirectXゲームグラフィックスプログラミングVer.2.1Vista」という本を参考にしています。 よろしくお願いします。
- 235 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 19:57:46 ]
- >>232
そりゃ失礼。
- 236 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 19:58:40 ]
- まぁ、>>232も最後の1文は余計な一言だな
|

|