1 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 22:06:29 ] ※回答する人も、質問する人も必ず読んでください これらに当てはまる人のための質問スレです。 1.C/C++は多少理解している。 2.最近DirectXを始めたばかり 3.SDKを見ても、Googleで検索しても、いまいち理解できない人 4.余計な雑談は不要ですよ 【 回答してくださる方 】 ・ できるだけ優しく質問に答えてあげてください。 ・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。 「ググれ」「SDK見れ」以外の回答でおながいします。 ・ 神ですら理解不能な質問は無視して下さい。 【 質問する方 】 ・ どんな事で躓いているのか明確にしよう。 ・ 長くならないなら躓いている部分のコードを晒してみれ。 ・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。 ・ 回答して貰ったら、出来るだけお礼もしよう。 【C++】 DirectX初心者質問スレ Part23 【C】 pc12.2ch.net/test/read.cgi/tech/1242977486/
106 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 19:43:30 ] >>104 それじゃなんねーと思うぜ 法線は段階的に角度がついてるわけじゃねーし
107 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 19:43:40 ] >>104 ありがとうございます 色の決定にトゥーンマップを使用していないのでつまづいています
108 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 19:53:43 ] >>106 なんで? 頂点シェーダでマップの参照位置を計算してピクセルシェーダにわたして 実際の色参照をピクセルシェーダでやれば問題ないんだけど
109 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 19:57:30 ] >>107 トゥーンマップを使わないでどうやってるの? いちいち内積の値でifで条件分けして陰つけてるの?
110 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 20:02:58 ] >>108 関係なくね? 例えば立方体の辺にグラデ入れたいとしてその方法で何かつくの?
111 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 20:07:34 ] VS上の法線などのベクトルは、 PSには線形補間されて渡される。
112 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 20:12:47 ] >>110 はライティングの仕組みを全く理解してないと思われ そんなこと言ったら普通のグローシェーディングもできないことになる
113 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 20:12:51 ] >>111 だから頭の中でそれでグラデがつくか考えてみろっての
114 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 20:14:52 ] >>112 だからその仕組みとこの仕組みがリンクしてねぇって俺は主張してるわけだよ
115 名前:102 mailto:sage [2009/06/30(火) 20:23:13 ] >>109 そうです、ifで条件つけてやってます マテリアルごとにトーンマップを用意するのが面倒なので
116 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 20:30:46 ] >>114 VSの計算結果で頂点Aが黒で頂点Bか白としましょう PSで頂点AとBの中間地点のピクセルを描画するときは 線形補間された灰色という値が入ってきますよね? だから通常のライティングが成立してるのはわかりますよね? VSで頂点Aのマップの参照位置を(u,v)=(0,0) Bの参照位置を(u,v)=(1,0)としましょう PSでAとBのちょうどまんなかのピクセル描画時には 線形補完された(u,v)=(0.5,0)という値が入ってきます この値をつかってマップの色をサンプリングすればOKなのですよ
117 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 22:35:53 ] >>116 そこまで来てねぇよw 法線の値でグラデかけたマップから値とりにいくところで うまくいかねぇと思うぜ
118 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 23:37:11 ] customUI使うには何をincludeすればいいでしょうか。 ソース分割とかやったことなくてさっぱりわかりません。 bccDeveloper使ってやっています。
119 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 23:52:15 ] >>117 www.arakin.dyndns.org/glsl_cartoon.php ここが比較的わかりやすいから、見てみれば。 そこのテクスチャの色は2色、輪郭を含めて3色だが、 その3色の境界にグラデをかければ、最終的な 出力画像にもグラデが掛かるだろ。
120 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 23:55:02 ] >>118 CustomUIの中のCoreとOptionalプロジェクトを インポートして使う。 VCならそのままだが、bccDeveloperはシラね。
121 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 00:00:58 ] >>119 かかんねぇよ よく考えろよ
122 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 00:12:20 ] げちょげちょすっげキタネェのができるぞ トゥーンマップ(?)でうまくいくのって2〜3色ぐらいでグラデなしの ときだけのような希ガス 綺麗にならないのはグラデがかかってほしいところでちょうど 法線(内積?)が段階的にかわってくれるとは限らないってところがポイントだと思う つまり、内積→マップの値の変換でうまくいかない
123 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 00:50:19 ] 境界って輪郭線じゃなくてシェーディングの部分でしょ? だったら実際のところトーンマップの中間をグラデにしてるだけだと思うが>CelView きたねぇところはきたねぇし
124 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 01:54:32 ] >>123 境界の認識はあってるよ 実はCelView見てないけど だったら高解像度になるにつれ余計なことしないほうがいいな ようはシェーディングの境界をぼかしたいわけじゃなくて シェーディングの境界がジャギってんのが気に入らないんだろ?
125 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 11:42:26 ] プログラマブルシェーダについて質問です。 bool型定数を使った静的分岐をやろうとしました。 ttp://msdn.microsoft.com/ja-jp/library/bb944006(VS.85).aspx >静的分岐では、ブール型のシェーダー定数に基づいてシェーダー コード ブロックのオン/オフを切り替えることができます。 >これは、現在レンダリングされているオブジェクトの種類に基づいて >コード パスを有効または無効にできる便利な方法です。 >描画呼び出しの間では、どの機能を現在のシェーダーでサポートするかを決定し、 >その動作に必要なブール フラグを設定できます。 >ブール定数で無効にされたステートメントは、シェーダー実行中にスキップされます。 下記のようにやってみたのですが、 fcx.exeでコンパイルしたものを覗いたところ、cmp命令が使われてしまっていました。 それでは分岐による負荷がかかってしまいますよね。 分岐負荷がかからないコードブロック単位での静的分岐とは、どうやるのでしょうか? bool UseTexture; float4 PS(VS_OUTPUT In) : COLOR { if (UseTexture) { In.Color *= tex2D(DecaleSamp, In.TexDecale); } return In.Color; }
126 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 14:57:45 ] #ifdef #else #endif
127 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 18:58:43 ] >>125 静的に決定させる為には、 静的に決定出来なきゃ駄目だよね。 >>125 のコードだと、「bool UseTexture」は いつ何時変わる可能性があるので、コンパイラは 決め撃ちすることは出来ない。 方法としては、>>126 のプリプロセッサ以外に、 @「static const UseTexture = true;」にする。 Aシェーダの引数で受け取り、passで分岐する。 float4 PS(VS_OUTPUT In, uniform bool UseTexture ) : COLOR { if (UseTexture) { In.Color *= tex2D(DecaleSamp, In.TexDecale); } return In.Color; } technique T { pass P0{ pixelShader = compile PIXELSHADER_TARGET PS( false );} pass P1{ pixelShader = compile PIXELSHADER_TARGET PS( true );} } いづれも、最適化とプリシェーダはONにしておくこと。
128 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 20:01:27 ] >>126-127 アドバイスありがとうございます。 静的分岐とは言え、さすがにON/OFFのチェンジはしたいので >>126 や、>>127 の@というわけにはいきません。 ひとまず、>>127 のAではうまくいきました。 そこで再質問なのですが、グローバル定数は、uniformとして扱われるMSの説明に書いてある上、 1回の描画命令の間では不変ですよね? グローバル定数ではダメなのでしょうか?(ダメだったから>>125 はダメだったわけですが…) 正直引数のuniformでやる方法ですと、 pass P0{ pixelShader = compile PIXELSHADER_TARGET PS( false );} pass P1{ pixelShader = compile PIXELSHADER_TARGET PS( true );} このようにtrueの場合とfalseの場合をいちいち定義しなければならず、 組み合わせが多い場合(ライトON/OFF、影ON/OFFなどなど)に組み合わせ爆発が厄介そうです。 uniform int の場合はintの取りうる範囲が多すぎるため、 PS(0) PS(1) のように定義しなければならないのはわかるのですが、 MSの説明を見る限り「bool型のシェーダ定数は特別扱いだよ」みたいに読めるのですが、 bool型を使うことによる利点のようなものは何かないのでしょうか? MSの説明を見て
129 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 20:38:08 ] >>128 >1回の描画命令の間では不変ですよね? シェーダの生存期間は、コンパイルによって exe(的なもの)として生成されてから、破棄されるまでの間です。 描画命令間ではありません。 定数が静的であるとは、生成から破棄の間静的であることです。 描画命令の間不変としたいなら、描画毎のコンパイルが必要。 >組み合わせが多い場合(ライトON/OFF、影ON/OFFなどなど)に組み合わせ爆発が厄介そうです。 そうです。これはD3D9世代の欠点でもあります。 これを補う為に、フラグメントシェーダやデファードレンダリングなどがあったりします。 DX11では動的リンクが加わるそうなんで、ちょっとはマシになるかも。
130 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 22:30:38 ] DX11でシェーダの連結ができるって大騒ぎしてるけどさ なんかDX9のフラグメントリンカーの存在忘れたような大騒ぎがよな 無かったことにされてるのか?? 情報もえらく少ないし。
131 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 22:35:50 ] シェーダ爆発なんて騒ぐのはキレイなエンジン作りたいやつだけで 普通は運用でどうにでもなるだろ。
132 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 23:20:36 ] >>130 wlog.flatlib.jp/item/1219 wlog.flatlib.jp/item/1230 このブログがわかりやすいが、DynamicShaderLinkageは 動的リンクというよりは、サブルーチンコールに近いものらしい。 イメージとしては、動的にShaderの部品を組み上げて 1つのShaderを作るのがフラグメントリンカならば、 とりあえず全てがつまったmain()プログラム的なShaderを1つ作って、 動的に個々の分岐を決定出来るのがDynamicShaderLinkageということになる。 これが良くなったかどうかわからんが、より普通になった感じだな。
133 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 23:24:51 ] >>130 フラグメントリンカを使ってる人は 今現在、世界で4人、 商用・非商用プログラムで使われてる例はゼロらしいよ。
134 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:10:26 ] 現状のPC構成だと殆どのケースでネックになるのがCPUだから GPUで多少分岐したところで全体の速度に大差はないからな。 多少のシェーダー負荷は承知の上でまとめちまうほうが管理が楽。
135 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:39:03 ] DirectSound で再生しながら、 横軸に周波数、縦軸に音量を表すようなグラフを リアルタイムで描きたいです。 とりあえずWAVを再生するところはできてるんですけど、 そのようなグラフを描くにはどうすればいいですか?
136 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:48:55 ] すれ違いじゃねっかな。 再生できてるならそのデータをそのまま解析すればいい。 どういう風なデータ構造になってるか分からないって質問は論外。
137 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:49:57 ] spectrum analyzer source code でググったら。
138 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 14:05:54 ] フルスクリーン描画をしているときに画面中にダイアログを表示するのってどうやるの? フルスクリーン描画しているウィンドウがフォーカスを失うと device->Present()が失敗してしまう問題と、 フルスクリーン描画をかけるとほかのウィンドウが表示されてても 描画内容が上書きされてしまう問題とがあるわけだけど。
139 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 18:24:20 ] 深度バッファシャドウについて質問です。 完全な影になる部分は、RGBA(0.5f, 0.5f ,0.5f, 1.0f)であるとします。 普通の理屈通り使うと、ライトから見て裏面になる部分は、深度バッファシャドウ的に影であると判定されますよね。 でも、ライトから見て裏面になる部分は、すでに頂点シェーダ上でCOLOR0の値が半減しているはずです。 ピクセルシェーダでの判定にひっかかったからといって、さらに半減してしまうと、影が濃すぎることになりますよね。 これは、頂点シェーダでは影による表面色の補正をかけず「影の濃さ」を計算してピクセルシェーダに渡し、 深度バッファシャドウとライティングのシャドウを先に計算し、最後に表面色に反映。としなければならないのでしょうか?
140 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 19:52:52 ] 影と陰ね これは同じ物理現象だよね たしか
141 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 19:57:29 ] シャドウマップのサンプルがあるんだからそれ見ればいいだろ 三項演算子使ってるから
142 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 20:01:13 ] Direct3Dの色ってどうして少数使うの? 遅いでしょ。
143 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 20:06:18 ] シャドウマップを影を追加する為のギミックとして 使うのではなく、 光が当たっているかどうかの判断に使うといい。
144 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 20:08:04 ] >>142 正規化してるだけ
145 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 20:24:56 ] >>143 あ、なるほど。 すんなり理解できました。わかりやすい教示ありがとうございます。
146 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 08:54:10 ] >>142 GPUでは小数のほうが早い
147 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 15:42:01 ] SAFE_RELEASEマクロの代わりに以下のようなインライン関数を書いたのですが、IUnknownのポインタがうまく変換されないのでコンパイルができません inline void SafeRelease(IUnknown *& pUnk) { if (pUnk) { pUnk->Reelase(); pUnk = NULL; } } 以下ポインタの型変換をテストしてみたものですが、どうしてエラーになるコードが駄目なのかがわかりません このように変換ができない理由を教えて下さい IDirect3D9 * pD3D9 = Direct3DCreate9(D3D_SDK_VERSION); //IUnknown *& rp = pD3D9; // エラー //IUnknown *& rp = (IUnknown*)pD3D9; // キャストしてもエラー IUnknown * p = pD3D9; IUnknown *& rp = p; // 一時変数にコピーしてからだとOK [ VC++2008 EE / DirectX SDK March 2009 ]
148 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 16:08:38 ] IUnknown *& rp = pD3D9; // エラー
149 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 16:17:09 ] 関数のコンパイルが成功しない理由は148だと思うのですが、どうしてこの変換が認められないのか教えて下さい
150 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 16:22:25 ] ポインタは変換可能だが、参照は変換できないというだけ。
151 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 16:27:14 ] ありがとうございました。
152 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 20:49:27 ] あえて関数化する必要がないしなー
153 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 22:56:19 ] スマポ使えってこった
154 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 18:42:31 ] むむ RegexOptions^ Option = gcnew RegexOptions(); Option |= RegexOptions::CultureInvariant; これでコンパイルエラーerror C2676が出てしまいました・・。
155 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 19:23:53 ] >>154 型が違うんだから当然じゃないか。
156 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 20:12:07 ] すまぽってComPtr的な動作したっけ?
157 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 21:21:41 ] 無理、よって完全に的外れ。
158 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 21:28:58 ] / ̄ ̄ ̄\ / ⌒ ⌒ ヽ / ( ●)(●) | | (__人__) } … /、. ` ⌒´ ヽ / | | | / ヽ_| ┌──┐ |丿 | ├──┤ | | ├──┤ |
159 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 21:31:47 ] レベル低いなぁ
160 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 23:51:17 ] directX9で2Dゲームを作る為にPNG画像を表示しようと思ったのですが D3DXCreateTextureFromFileInMemoryEx(g_pD3DDevice,ptr,SizeofResource(NULL, hRsrc),40,40,8,0,D3DFMT_UNKNOWN,D3DPOOL_MANAGED, D3DX_DEFAULT,D3DX_DEFAULT,0,NULL,NULL, &img[i]); で40pxの画像を読み込むと64pxに拡大されて表示されてしまいます。 元の画像のサイズのままで読み込みたいのですがどうすればいいでしょうか。
161 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 23:57:44 ] 自分でそうなるようにしているからだろ。 他人の作ったAPIが使えない、ヘルプを読むつもりもないのなら、 全部自前で読み込めよ。
162 名前:160 mailto:sage [2009/07/05(日) 00:25:32 ] >>161 msdn.microsoft.com/ja-jp/library/cc372744.aspx このページと自分の持ってる本を参考にしても分かりませんでした。 参考になるサイトや本を紹介して頂くだけでも有りがたいのでどうかアドバイスをお願いします。
163 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 00:31:33 ] >>160 VGAによってはそうなる。 自分のPCだけで無くどこでも動くようにするなら、テクスチャは2のべき乗サイズになると想定したほうがいい。
164 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 00:41:59 ] >>163 VGAのせいじゃねえよ。 どんだけ馬鹿なんだよ? >>162 引き延ばす設定が入っているから。 いったいヘルプのどこを読んだんだよ?
165 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 00:51:21 ] VGAによってはサイズ制限があるから D3DXがフラグの設定どおりに拡張してテクスチャを作る。 ⇒VGAのせいってコトだったんじゃね?
166 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 00:53:34 ] 客:アプリが起動しません。 サポ:デフラグかけてみて。 客:直りました。 動くプログラムを早く作るのは、いちいち理屈を勉強するプログラマではなく、魔法を信じるプログラマの方である。
167 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 01:03:38 ] 俺の経験だけかもしれんが デフラグをかけた(かける必要が出た?)PCは例外なく復活は無くお亡くなりになるw
168 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 01:10:16 ] NT4時代から毎日かけているがそんなことは無かったぜ。
169 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 01:13:08 ] まめにやってると数秒だな
170 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 01:23:50 ] >>160 ところでテクスチャのサイズと表示のサイズには何の関係性もないんだけど なぜ拡大されていると判断したの? 作成したテクスチャのGetLevelDescでサイズを取得してみて 本当にサイズが64のテクスチャとして作られているか確認したの? もしそうならそれはビデオカードの問題 テクスチャのサイズが40なのに64で表示されているっていうなら それは表示のさせ方の問題 貼り付けてるポリゴンはどうなってるの? 射影行列の設定は? viewポートとウインドウサイズが一致してないとかは?
171 名前:160 mailto:sage [2009/07/05(日) 02:01:54 ] >>170 GetLevelDescでサイズを取得したら64×64でした。 Draw関数で40pxに縮小して表示してみたんですが若干ぼやけてしまいました。 テクスチャは2D画像を表示させるのに適していないってことでしょうか。 画像を表示させる別の方法を探してみます。 アドバイス有難うございました。
172 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 02:08:31 ] >>171 2Dゲーム作るならOpenCVでいいんじゃない?
173 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 02:28:18 ] >>171 元々テクスチャというのは不定形のメッシュに伸び縮みさせながら貼り付ける道具だから、 デフォルトでフィルターがかかるようになっている。 FilterとMipFilterをD3DX_FILTER_NONEにすれば補間は起こらないよ。 >>164 初心者に嘘ばかり教えない。 おまえ、ネットブック(GMA950)で動作チェックしたことないだろ?
174 名前:160 mailto:sage [2009/07/05(日) 02:49:04 ] >>173 ありがとうございます。 黒い領域が残ったけどクリッピングで消せそうなので大丈夫そうです。 VCproだと64×64になってしまったのですが、ExpressEditionでプロジェクトを 作り直したら40×40のテクスチャを作れました。 原因はVCの設定ミスなんでしょうか・・・
175 名前:デフォルトの名無しさん [2009/07/05(日) 05:17:56 ] スキンメッシュをリソースファイルから呼び出すにはどうすれば良いですか?
176 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 06:58:30 ] >>173 GMA950はNONPOW2CONDITIONALがYesだったと思うが。 NONPOW2CONDITIONALはドライバレベルで対応できる機能だから、 よほど古くてドライバが更新されてないのでなければ使える。
177 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 09:14:36 ] デフラグを頻繁に行うと間違いなくHDDにダメージを与える事になる PCの調子がおかしい時は基盤とかにホコリがたまってて電源不足になってる可能性あり
178 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 09:28:29 ] >>174 なんでUVを適切に設定しないでクリッピングなんだ? 意味分からん >原因はVCの設定ミスなんでしょうか・・・ 人の話を聞かない奴だな
179 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 12:49:38 ] 断片化した状態で使うのは常にデフラグをかけているのと同義
180 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 12:59:03 ] 結局確率の話でしかないだろ。 対象のファイルが ・頻繁に読む・固定長で書き込み HDD側で2桁程度の高速化 ・永久に使用しない 無益 ・追記する場合 また断片化する
181 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 13:18:19 ] まぁSSDにしとけってこったな
182 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 13:32:41 ] はいはい、スレ違いスレ違い
183 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 14:02:30 ] コンパイルしようと思ったら 1>------ ビルド開始: プロジェクト: a, 構成: Debug Win32 ------ 1>コンパイルしています... 1>main.cpp 1>マニフェストをリソースにコンパイルしています... 1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1 1>Copyright (C) Microsoft Corporation. All rights reserved. 1>リンクしています... 1>LIBCMTD.lib(dbgheap.obj) : error LNK2005: __CrtSetCheckCount は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: _exit は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: __exit は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 ・ ・ 1>libjpeg_d.lib(jpegtran.obj) : error LNK2019: 未解決の外部シンボル _keymatch が関数 _parse_switches で参照されました。 1>D:\Program Files\VC\project\a\Debug\a.exe : fatal error LNK1120: 外部参照 9 が未解決です。 1>ビルドログは "file://d:\Program Files\VC\project\a\Debug\BuildLog.htm" に保存されました。 1>a - エラー 40、警告 2 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== と出ます。何が原因でしょうか? コード自体は homepage2.nifty.com/natupaji/DxLib/dxuse_vc2008express.html#R6 の6.プログラムを組む、というプログラムです
184 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 14:08:36 ] >>183 はいはい、CRTの設定ミス。全プロジェクトで統一しようね。
185 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 14:22:53 ] >>184 ありがとうございます CRTよくわかりませんがぐぐって調べてみます
186 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 14:30:59 ] >>184 できました。ありがとございました
187 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 16:22:43 ] 他アプリ(DirectXモノ)画面に上書き描画出来るようになったんだが、チラツキが多すぎて微妙です。 タイマーを使っているのが間違いだと思うのですが、解決方法ありますか? Presentフックが王道とは思うのですが、vsync待ちの処理ができる方法があるならアドバイスいただけないでしょうか。
188 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 17:24:43 ] 質問です。 D3Dで地面に影メッシュを表示しようと思うのですが、地面とまったく同じ高さに描くと Z-fightingが起こってしまいますよね。 これに対処するためわずかに地面から浮かせていたのですが、Z-fightingが起こらない程度に浮かせると 影の位置がずれているのが結構見えてしまいます。 そこで「描画位置はそのままに、Zバッファでの比較の際バイアスをかける」方法がないか探しているのですが、 どうにも見当たりません。 バイアスをかける方法があれば教えていただきたいのです よろしくお願いします。
189 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 17:42:25 ] 188自己解決です float bias = -0.1f; pDev->SetRenderState(D3DRS_DEPTHBIAS, *((DWORD*)&bias)); で出来ました。 が、D3DRS_DEPTHBIASはマイナーな上、サポートしていないグラボも少なくないとか? このあたりの情報おもちのかたいらっしゃいましたら、教えていただければと思います。
190 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 17:49:41 ] >>188 単純に地面のあとから描けばいいような気がするんだが、それで問題があるんだろうか。
191 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 17:49:43 ] シェーダーでやれば問題ない。
192 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 18:08:42 ] 質問です。 Xファイルとやらでオブジェクトを表示させようとしたのですが、メッシュ(?)だけ表示されて色の情報が描写されません。 同じようなことがあった人がいたら解決法を教えてください。お願いします
193 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 18:22:42 ] あーいーうーえーおー あ あしかの赤ちゃん雨の中 赤い雨傘甘えん坊 い いちご畑の一年生 石ころ一個 コロコロ う 宇宙の海で運動会 え 円盤遠足絵の具で絵日記 お 折り紙のオルガンで あ い う え お の 音楽 あーいーうーえーおー
194 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 18:38:47 ] 再現する最低限のコード晒すといい。
195 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 18:41:30 ] Xファイルはあくまでデータのコンテナであって、 中のデータをどう描画するかは自分次第。 よって自分でやっていないからとしか言いようがない。
196 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 20:23:51 ] 色々やってみたら、テクスチャのファイルネームに何も入っていないことがわかりました。何とかなりそうです、ありがとうござました
197 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 20:34:55 ] GDIのコントロールを描画しようというのが根本的に王道ではない。 王道だったらMicrosoftがやってる。
198 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 22:22:34 ] >>197 ありがとうございます 描画対象エリアのみ2D使ってるぽいところに2D上書き予定なのですが、 zが手前になるように追加描画が出来るか調べてみようかと思います
199 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 15:39:10 ] 質問です。 ピクセルシェーダの色出力を省略し、深度バッファへの書き込みだけを行う方法があったと思うのですが どなたかわかる方いらっしゃいますでしょうか? PixelShaderの返り値をvoidにしたらHLSLコンパイルエラーになりましたし、 PixelShader = NULL; にしたら妙な色が書き込まれてしまいました。
200 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 16:41:02 ] SetRenderState()で色の書き込みをマスクする。 DirectX10ならSetRenderTargetでNULLをいれる。
201 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 16:50:02 ] D3DRS_COLORWRITEENABLE ですね。 ただこれは、マスクを0にしてもピクセルシェーダ自体は呼び出されてしまうようです。 ピクセルシェーダ自体を呼び出さずに済ませてしまう方法があったような気がするのですが・・・ 曖昧な記憶で申し訳ないです
202 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 17:48:55 ] 9でも連打ーターゲットNULLでいけなかったっけ
203 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 18:12:17 ] >>201 DirectX9にはない。 0.0を出力しとけ。 普通は色の出力を全部マスクしていればドライバー側で PixelShaderの処理はスキップしてくれるはず。 >>202 インデックス0に対してはNULL無理。
204 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 20:31:43 ] ピクセルシェーダから深度値を変更できるんだから、 カラー出力しなくてもスキップされるわけないだろう。
205 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 20:35:20 ] 深度値を出力した時だけ早期Zカリングがスキップされたりするんだから カラーマスクと深度出力をみて不要ならスキップもしてるだろ。
206 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 20:56:12 ] スキンメッシュのプログラムはマテリアルを設定してないの?
207 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 21:28:10 ] それは自分次第だろ。
208 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 21:44:46 ] HELP ME Xファイルを表示するためにマテリアルの数を変数に格納したはずなのになぜか格納されていません。 推測で原因を教えてください
209 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 21:57:48 ] 推測だがお前が悪い
210 名前:デフォルトの名無しさん [2009/07/06(月) 22:54:50 ] directsoundでIDirectSoundBuffer8::SetVolumeをセットしても音量に変化がありません。なぜだすか?
211 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 22:57:08 ] >>210 っ 初期化
212 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 23:49:24 ] >>211 IDirectSound8::CreateSoundBufferが内部で初期化してるけど、音量変更前にもう一回初期化するってこと? そもそもループ内でそれやるの難しくない?
213 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 23:56:55 ] 最初にやれよ
214 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 00:01:05 ] CreateのときにDSBCAPS_CTRLVOLUMEフラグを立ててないからって落ちじゃ?
215 名前:デフォルトの名無しさん [2009/07/07(火) 00:51:34 ] a
216 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 01:02:16 ] DI8で pDI8->EnumDevices でデバイスを列挙するのはわかるんだが pJoyDevice->EnumObjectsでプロパティを列挙したときに何が取得できるかよくわからない たぶんボタンがいくつあるとか軸の範囲とかの取得・設定ができるんだと思うんだけど EnumObjectsCallback内でpJoyDevice->SetPropertyとかやっているサンプルが多く、 これだとpJoyDeviceが1つのときは問題ないんだろうけど 複数のpJoyDeviceを扱いたいときとかどうすればいいのだろう? とか考えるとさらによくわからなくなりまつ BOOL CALLBACK EnumObjectsCallback( const DIDEVICEOBJECTINSTANCE* pdidoi,VOID* pContext ) のpContextに、プロパティ設定したいデバイスのpJoyDeviceでも渡して pContext->SetPropertyとでもしておけばいいんでしょうか?
217 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 01:12:08 ] PCでパッド2個つけて2人用プレイって需要あるんかな 格闘ゲームでも1P vs COM か COM vs COMしか利用されないだろ
218 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 02:16:04 ] 家庭用ゲーム機のエミュとか?
219 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 09:15:32 ] abnormal.sakura.ne.jp/upfiles/2008/06/29/keiou.jpg l i i i i l / ̄ヽ 昼l ゝ ノ ゝ ノゝ ノ , o ', 食ご l i´ `i _ i´ 講 `i `l レ、ヮ __/ べはl l / \ l 義 l l / ヽ よん.l {@ @ i が l l _/ l ヽ うを l } し_ / お しl i i l > ⊃ < わ l ート lヽ、 / l ヽ っ  ̄ ̄¨¨'~~ ‐‐‐--─| ヽ 、 / /l 丶 .l`\ た ____ __ | (_/ | } l`\| || |WC| | へ へ ヽ、 l ! \|| ||  ̄ ̄ |/ \ `ヽ、 ヽし! /|| ガタッ || | / / ヽ、|| ◎|| | / / ヽ、  ̄ ̄ ¨¨¨ー─‐‐--- ,,, __ ____ ,, _ |  ̄¨¨` ー──--- モパ / `、 | モパ |::::::::::::::: グク / ヽ | グク /  ̄ ヽ:::::モパ モパ./ ● ●l | モパ l @ @ l:::グク グク l U し U l | グク } し_ /::::モパ l u ___ u l | _ /=テ⊃ <_グク >u、 _` --' _Uィ l ◎ー)/キ' ~ \ヽ / 0  ̄ uヽ | | | | i二二二i-' ) ', . / u 0 ヽ| ~~~ ~ l ヽ--┬ ' ./ テ==tニト | / ̄/ ̄ ̄` ノ / / ̄) ̄ | ̄ ̄ ̄ ̄ ̄| | | |二二二)
220 名前:sage [2009/07/07(火) 18:55:08 ] >>216 pJoyDevice->EnumObjects は 第3引数で指定したフラグの情報が取得できる 例えば軸情報なら DIDFT_AXIS を指定すればいい。 ttp://msdn.microsoft.com/ja-jp/library/cc351884.aspx >BOOL CALLBACK EnumObjectsCallback( const DIDEVICEOBJECTINSTANCE* pdidoi,VOID* pContext ) 引数には DIDEVICEOBJECTINSTANCE オブジェクト と EnumObject で渡した第2引数 pContext がある。 コールバック関数で指定したフラグの情報を含む DIDEVICEOBJECTINSTANCE オブジェクトから pContext に情報を 引っ張ってくればいい。 ex) Joystick* pJoy = (Joystick*)pContext; if (pdidoi->guidType == GUID_XAxis) /* 処理 */
221 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 21:13:24 ] トイレでプログラミングはしても良くて助かった
222 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 21:32:50 ] 監視カメラ設置かよ
223 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 23:14:53 ] あれあれ? 俺ライブラリをVistaに対応する前にWindows7とかでちゃったw
224 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 23:30:55 ] これはどんな仕組みなの? ttp://www.teatime.ne.jp/infor/tech48/page_02_01.htm
225 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 23:42:55 ] DirectXと関係ない宣伝行為乙
226 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 23:47:07 ] どう見てもDirectXだが 推奨環境 Vista 日本語版WindowsXP / Vista Intel(R)Core(TM)2 Duo プロセッサ 2.40GHz 以上 メモリ 以上 2.0GB 以上 DirectX9.0cに完全対応し ビデオメモリ256MB以上で ピクセルシェーダー2搭載の GeForceまたはRADEONシリーズ (メーカーから最新のグラフィック ドライバサポート必須) 画面解像度1280X960ピクセル フルカラー推奨 メインメモリと共有と表記のあるビデオシステムは動作保証外となります サウンド DirectSoundに完全対応したサウンドカード DVD-ROM 4倍速以上のドライブ HDD 5.0GB以上の空き容量
227 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 23:54:16 ] 224の仕組みとDirectXは関係ない。 OpenCVのスレにでも行けばいいかと。
228 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 01:44:18 ] てs
229 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 09:02:37 ] >>223 よう俺
230 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 09:16:19 ] 宇 宙 の 大 規 模 構 造 (太陽の∞倍)  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄∧ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 帝ハ神ナリ!帝ハ神ナリ! グ レ ー ト ウ ォ ー ル  ̄ ̄ `――(長さ:太陽の3500兆倍、幅:太陽の2100兆倍) __ , -―― ∧ 守るも攻めるも黒鉄の〜♪ _,,,,,,,,_ /` `'i、 超銀河団 | l <ゴミクズども氏ねよwwwww ゙l、 / `'ー---'" (太陽の約680兆倍〜) 銀河系 o <太陽?誰だよそれwwww (太陽の6800万倍) IRS5 。 <太陽?俺の国民だよ (太陽の10000倍) 太陽 . <たいようたいよう〜! (直径140万km)
231 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 11:44:25 ] カメラの使用はDirectShowの範疇でありDirectXではない。
232 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 14:56:39 ] DirectX9のフックについて、初心者向けの詳しいHPはありませんか? 当方、VC(++は少し苦手)、VB、Delphi分かります。dllのコンパイルも出来ます。 目標は、フルスクリーンの別アプリ画面に自前のグラフィックを描画することです。 レベルが低い質問かもしれませんが、よろしくお願いします。
233 名前:232 mailto:sage [2009/07/08(水) 15:02:38 ] 別アプリのhWnd取得と画像データの取得までは出来たのですが、描画の方が上手くいきません。
234 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 15:08:48 ] またおまえか
235 名前:デフォルトの名無しさん [2009/07/08(水) 15:12:14 ] 16と16の平たいを毎回敷き詰めて描くと テクスチャに写植して描くはどちらが速いか?
236 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 15:19:37 ] 実測しろ
237 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 15:20:59 ] 日本語がおかしいが 敷き詰めて書くのが1回の命令で出来るならそっちの方がいいんじゃね? ただのループならWARP指定汁
238 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 16:18:32 ] >>234 やはり直接フックがベストですか! 有り難う御座いました。
239 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 17:23:37 ] 質問です。 カメラから見た時の、あるメッシュの「厚み」を調べる方法を考えています。 サイコロのような凸型物体ならば、 ・裏面を描画し、テクスチャAに深度値として書き込む。 ・表面を描画し、テクスチャBに深度値として書き込む。 とし、A-Bで厚みが出ると思います。 (深度バッファシャドウの時のように、深度値をz/wで0〜1にしてしまうと、歪んでしまうので単純にzを記録する必要がありますが) ただ、「コ」の字を上から見た時のような場合の厚み合計の出し方が思いつきません。 「コ」を真上から見た際、上辺の厚みと、下辺の厚みの合計が知りたいのです。 何か良い手はありますでしょうか?
240 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 17:34:02 ] >>239 表面/裏面と分けるのではなく、カリングを無効にした状態でZFUNCを LESSEQUAL、GREATEREQUALにして描画する。
241 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 17:39:32 ] >>239 加算合成すればいいのではない? 裏面のZ値の合計から表面のZ値の合計を引く 0〜1の範囲をはみ出ないようにしないといけないけれど
242 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 17:49:10 ] >>240 すいません、その結果何が解決するかがちょっと分からないのですが…。 一番奥であるポリゴンまでの距離が記録されるだけかと。 >>241 素晴らしいです! まさにその通りですね! (Af - An) + (Bf - Bn) == ((Af + Bf) - (An + Bn)) ということですね。 ありがとうございました。
243 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 18:31:47 ] 3Dゲームのプログラミングを始めようと思うのですが オススメの書籍はありますか?
244 名前:240 mailto:sage [2009/07/08(水) 18:59:59 ] >>242 上辺の厚みと下辺の厚みの合計ってとこ見てなかった。 コが1枚ずつの面ってことじゃなくて、厚みのある凹ってことね。
245 名前:216 mailto:sage [2009/07/08(水) 19:25:37 ] >>220 EnumObjectsCallbackで何をやってるのかようやく理解できますた VOID* pContext に LPDIRECTINPUTDEVICE8 を渡して コントローラーごとに個別にプロパティが設定できるようになりました ありがとうござますた
246 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 19:27:41 ] >>243 DirectX逆引き大全500が鉄板だと思うが Googleのオンライン書籍立ち読みで見れるので見るといい
247 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 21:33:09 ] いまググって調べた。 東京12.960.883人の内、支那人149.113人だな。 堂々コリア人を抜いてる。 (09年5月調べ) 約、100人に1.15人いるんだな。
248 名前:デフォルトの名無しさん [2009/07/08(水) 22:49:17 ] 初心者ですが質問させてください。 現在DirectSoundを使った音声キャプチャプログラムを作成しています。 マイクやライン、サウンドミキサなどの入力先を指定してキャプチャを行いたいので 次の手順でキャプチャデバイスオブジェクトの作成を行っています。 手順1.DirectSoundCaptureEnumerate関数を使用して利用可能なデバイスを列挙 手順2.手順1で列挙したGUIDから任意の入力先のGUIDを選択し DirectSoundCaptureCreate8関数の第1引数に設定しキャプチャデバイスオブジェクトの作成 Vista環境では手順1のDirectSoundCaptureEnumerate関数で マイクやラインなど録音デバイスの項目に表示されている 入力先の数だけデバイスの情報が取得できて 入力先を選択してのキャプチャが実施できるのですが、 XP環境では1つのデバイスしか列挙できず入力先の指定が行えません。 (録音コントロールにはマイク、ライン入力など複数の入力先が表示されています。 録音コントロールで選択されている入力先の音しかキャプチャ出来ません。) XPでは入力先を指定してのキャプチャデバイスオブジェクトの作成は行えないものなのでしょうか? 不可能な場合は何か入力先を指定してキャプチャするよい方法はないでしょうか? よろしくお願いします。
249 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 23:44:16 ] Ring 3 Circus のDirect3D9 Hookingを改造して Direct3D9を使ったゲームの画像を取得するプログラムを作ったんですが デバイス作成時にバックバッファをロック可能にするフラグを指定していないと バックバッファの内容が取得できないようです。 それでIDirect3DSwapChain9::GetPresentParametersを呼んで、 得られたD3DPRESENT_PARAMETERSのFlagsを flags |= D3DPRESENTFLAG_LOCKABLE_BACKBUFFER のように変更し、Resetを読んだら、HRESULTがD3DERR_INVALIDCALLに・・。 Resetはだめみたいです。 ランチャとか用意して、バックバッファをロック可能でデバイスを作成させるのは使うとき面倒です。 ほかにバックバッファの内容を取得する方法は無いんでしょうか
250 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 00:36:26 ] 取得しないといけない状況がまったく思いつかないので分からない。
251 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 00:45:51 ] IDirect3DDevice9::StretchRectでコピーすりゃいいんでないの
252 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 10:30:42 ] 質問です パーティクル(たくさんのビルボード)を表現するのに DrawPrimitiveUP + D3DPT_TRIANGLELIST を使っています。 1つのビルボードを表現するのに6頂点。 100個なら600頂点のデータをDrawPrimitiveUPに渡す必要があるのですが、これが思いのほか遅い気がします。 パーティクルを表現するのに、DrawPrimitiveUPを使うのは常道なのでしょうか? DrawPrimitiveUPによって、メインメモリーからVRAMに転送するコストが大きいのが遅い原因かな?と思います。 ただ、パーティクルは移動なども毎フレーム行われるため、DrawPrimitive(UPではない)のほうでは実現が難しい気がします。 (結局は毎フレームStreamに流す作業が必要。これではVRAMへの転送コストは変わらない)
253 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 10:47:49 ] AGPメモリ
254 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 11:05:55 ] どんなパーティクルを想定してるのかわからないけど 6頂点のポリじゃなくて1頂点のポイントスプライトにしてみるとか そうすると制御が楽になるので簡単な飛び散りくらいなら 頂点シェーダで動かせるようにもなるし
255 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 11:16:33 ] >>252 ホントにDrawPrimitiveUPの呼び出しだけを計測してる? 頂点演算って毎フレームCPUにやらせると結構負荷かかるよ。 パーティクルの移動計算が幾何学的なものならシェーダーにやらせたほうがいい。
256 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 11:31:06 ] レスありがとうございます >>254 ポイントスプライトも考えたのですが(ポイントスプライトで実装しているパーティクルもあるので)、 今回は頂点毎に違う方向を向いた法線が必要だった(疑似ボリュームパーティクル)ため、ビルボードにすることにしました 目指しているのは疑似ボリュームパーティクルによる煙表現です >>252 実験としてDrawPrimitiveUPに流し込む(FVFで定義した頂点フォーマットの)構造体を編集せず、描画し続けさせてみました。 ほぼ同等の速度のようです。 おそらくCPUパワーはほとんど足を引っ張っていないかと思われます。
257 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 11:43:31 ] >>256 TriangleStripなら4頂点で済むよ。 DirectXのバージョンが分からんが、たぶんヘルプに「動的な〜」頂点バッファ処理云々の項があって そこにDrawPrimitiveで、頂点位置が毎フレーム変わるようなものの処理の仕方が書いてあるはず。 簡単に言えば、頂点バッファを確保して、後は毎フレームに バッファをロック>書き込み>一杯になったらアンロックしてDrawPrimitive>再度バッファを… 更にインデックスバッファを使ってTriangleStripにすれば、転送コストはかなり違ってくるわよ。
258 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 11:49:37 ] Stripじゃ縮退ポリゴンで2頂点増えるから、減らないだろう。
259 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 11:57:46 ] バッファをロックするんじゃ、結局遅いと思うが
260 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 12:10:23 ] インデックスは毎回転送する必要がないから、流すデータ量は減るんじゃないか
261 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 12:17:30 ] 微妙な即レスが続いて、なんか答えるのが馬鹿馬鹿しくなってきたが >>258 2通りにとれるな。もう少し理由を言ってみ。縮退ポリなんか使わんよ。 >>259 今時そんな…ではDrawPrimitiveUPはどうやってVRAMに送ってるんだ? ロックとDrawは極力まとめるんだ。まぁ、UP系もそれなりに上手くやってくれるけど。 確かLunaの作者が昔実験結果を掲載してくれてたけど、今はなくなっちゃったみたいだな。
262 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 12:45:15 ] スプライトって全部板なんだから頂点情報ひとつで十分だろ
263 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 12:49:55 ] >>261 縮退ポリゴンを使わずに、複数のビルボードをStripで描画するってどうやるの?
264 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 12:55:40 ] >>261 いまどきそんな。とか言ったって、DrawPrimitiveUPより早くならなきゃ質問に答えたことにはならないんだぜ? しかも今回は、毎フレーム1回しかUPを呼び出さだないわけだし、どうやってUP以上に「ロックとDrawをまとめる」んだよ?
265 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 13:01:22 ] >>263-264 ごめんなさい 俺こそが質問者の質問をよく読んでない、ただの馬鹿馬鹿しい男でした
266 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 13:07:44 ] ちゃんと自分の間違いを謝れる奴は、伸びる奴
267 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 13:10:27 ] >>256 そこまで試したならついでに、静的なVertexBufferに頂点データ入れてみて 本当に転送が問題なのかも確かめた方がいいかと。
268 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 13:15:57 ] /j^i ./ ;! / /__,,.. / `(_t_,__〕 / '(_t_,__〕 / {_i_,__〕 / ノ {_i__〉 / _,..-'" / / 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
269 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 13:23:51 ] だから動的更新ならAGPメモリ使えよ。
270 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 13:40:13 ] >>263 インデックスバッファ >>264 まず>>259 でロックが遅いなんて書くから、UPでもロックのコストは変わらないと書いた。 「動的な〜」の項読んでみろと。>>253 氏のも乗ってたはず。 で更にUP系でIB使うと、毎回IBの転送が起こるよな? ところが非UP系ならば初期(或いはVBサイズ変更時のみ)コストだけで済む。 で、更に頂点数の転送量は2/3に抑えられる。 もう少しいうと、DrawPrimitiveUP系の場合、計算用のアクセスしやすいバッファの他に、 描画用の配列をメインメモリに取って、更にVRAMにも同じのが出来るわけだ。無駄だと思うがねぇ。 まぁ、好きに実装したらいいじゃないの。なんでそんな必死よ>>265-266
271 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 13:43:23 ] >>252 がDrawPrimitiveUPを連投してるなら それをまずやめるべき。 >>257 方式で、まとめるのが一番良い方法だろうな。 余力と環境があるなら、ジオメトリインスタンシングも 試して欲しいところだが。
272 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 14:06:50 ] 結局「縮退ポリゴンを使わずに、複数のビルボードをStripで描画する」方法の説明がないわけだが
273 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 14:11:03 ] インデックスで縮退用のを適当に一枚かますってことか それでなくてもDrawPrimitiveUPにこだわる人は、 描画数増えたときどうするんだろ?
274 名前:デフォルトの名無しさん [2009/07/09(木) 14:24:44 ] 「DirectSoundで鳴らしている音」を録音したいのですが、 どうすればよいでしょうか? 例えば、自作ゲームの「BGM」と「プレイ中に適宜鳴る効果音」の両方を 1つのWAVファイルに録音したいと思っています。 よろしくお願いします。
275 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 14:27:40 ] 縮退ポリは使わないと言ってるだろ
276 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 14:39:01 ] なんか大人と子供だな
277 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 14:40:13 ] そもそも2000〜3000ポリゴン以下ならDrawPrimitive系もDrawPrimitiveUP系も 速度にほとんど差がないんだが、みんな計測した上で話をしてるんだろうか?
278 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 14:43:08 ] 誰もそこの速度差は問題にしていないけどな
279 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 14:46:15 ] 259です。 >>270 >UPでもロックのコストは変わらないと書いた 259で書いてるのは「結局(UPと同じくらい)遅いと思うが」という意味です。
280 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 14:54:53 ] >>277 >>278 むしろ本当に3000ポリゴン程度で差が出るなら問題じゃね? 速いほう使った方がいいだろ
281 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 15:07:02 ] たくさんのご意見ありがとうございます。 まず、UPをやめる+INDEX化で転送量が2/3になるのは良さそうです。 やってみます。 さらにINDEXバッファは1回だけ書けば書き換え無用ですから、純粋に2/3になりそうで良いですね。 TriangleStripで〜という方法は、いまいちわかりません。 離れた位置の四角ポリゴン(実際は三角ポリ×2)を描画する必要がある以上、TriangleStripは使えないのではないでしょうか? 縮退ポリゴン(描画されない細い三角ポリゴン)を使うことによる手法も聞いたことはありますが。 AGPメモリというのが最初よくわかりませんでしたが、D3DUSAGE_DYNAMICを指定することなんですね。 こちらも試してみます。 このほかに、下記のような手法も考えたのですが、一般的ではないのでしょうか? 説明を楽にするために、INDEXではない方法での説明とします。 ・「四角形を1つ描画するのに必要な情報」を作る。つまり6頂点分。 頂点データの中にD3DFVF_SPECULARを加え、その領域に「何個目の四角形か」を入れておく。 ・上記の6頂点×描画しうる四角形分の”静的”頂点バッファを作り、情報を書き込む。 その際D3DFVF_SPECULARの領域に入れている「何個目の四角形か」をきちんと適切な値にしておく。 ・パーティクルを表現するには、四角形毎の座標情報を更新する必要がある そこでID3DXEffect::SetVectorArray()で座標情報を渡す ・エフェクト側ではD3DCOLORtoUBYTE4を使って、対応するVectorArrayの座標情報を引き出し、頂点座標に加算する 問題点として、ビルボードをカメラに正面向けにするためのMATRIX変換を頂点シェーダ内でやる必要があります。 (今までは、頂点データ内のxyzを正面向くように調整済みだった)
282 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 15:16:38 ] >>281 長々書いてあるが、テストすれば分かることだから自分でやってくれ。 Index関係の思い出といえば、 Indexバッファを途中から使うための引数の与え方が全然資料が無いことだった。 正しく動作させるまでかなり試行錯誤したな。 一度動けばなんてことないんだが。
283 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 15:24:58 ] >>282 詳しく 前にIndexバッファを途中から使おうとしたんだけど GeForceとIntel系チップセットでは想定通りの動きをしたんだけど ATI系のビデオカードではうまく動いてくれなかったんだよね
284 名前:282 mailto:sage [2009/07/09(木) 15:28:43 ] >>283 逆に、マジかと言いたい。 オレはGeForceで開発した上でIntel系とATI系でも動いてることを確認する形を取ったが、 Direct3DのAPIレベルで互換性が無いような違いが IndexedBufferレベルであるんだろうか?
285 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 15:44:09 ] >>281 全然わからんが、要はこれがしたいのか? FVFが通るか、不安があるけど。 uniform float4x4 g_world_transform[n] = { ... }; static const float4 g_local_position[4] = { ... }; // for box vertices struct vertex_in_t { uint24 transform_index; // 0~n uint8 position_index; // 0~3 }; struct vertex_out_t { float4 positon; float4 color; }; void vp_main( in vertex_in_t iv, out vertex_out_t ov ) { float4x4 world_transform = g_world_transform[iv.transform_index]; float4 local_positon = g_local_position[iv.position_index]; ov.position = mul( local_positon, world_transform ); pv.color = float4(1,1,1,1); }
286 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 17:34:48 ] 縮退ポリゴンとはなんぞや?
287 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 17:43:39 ] >>286 面積が0のポリゴン ストリップは数珠繋ぎしか出来ないけど 途中面積が0のポリゴンを繋げれば バラバラに見えるでしょ
288 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 17:52:37 ] 報告です。 281で提唱した方法だとでかかる時間を1とすると、 AGPメモリに置く方法は2 DrawPrimitiveUPでやる方法は3 となりました。 何の因果か、きれいに1:2:3になりました。 281で提唱した方法だと、実質VRAMへ転送している量はvector4 * particleNumでかなり節約できます。 その他ですと、 float x, y, z; float nx, ny, nz; DWORD color; float u, v; でfloat * 9 * particleNumほど転送しているので、二倍超転送していることになります。 やはりボトルネックはこのあたりなのでしょう。 次は、ストリームを分けることで、AGPメモリに置く方法をとりつつxyzの値しか転送しないようにしてみます。
289 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 17:59:13 ] 1*1のポリゴン用意して トランス演算とDraてPrimitive繰り返せばよくね?
290 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 18:21:59 ] >>281 を見てると「それってInstancingじゃね?」と言いたくなる ttp://msdn.microsoft.com/ja-jp/library/bb174602(VS.85).aspx
291 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 18:48:59 ] 小沢の西松建設問題の時 09/01/21 西松建設社長を逮捕 09/01/21 元西松建設専務 死亡 09/02/24 長野知事の元秘書(西松建設事件での参考人) 死亡 (電柱にロープを巻きつけ首吊り自殺) 09/03/01 「小沢一郎氏と秘書と、ダム工事のただならぬ関係」を追及してきた記者(吉岡元議員) ソウルで取材中に死亡 09/03/03 民主党岩手支部家宅捜索 09/03/04 民主党事務所のある相模原卸売市場全焼 助かった人 小沢氏の第一秘書・大久保容疑者も自殺の恐れが出てきたため、検察が緊急逮捕 鳩山の献金問題
292 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 23:14:37 ] 288です。 288の報告は、いわゆるオンボでの実験で、頂点シェーダがソフトウェアで行われていました。 グラボつき(GF9600)の環境で試したところ、 UP系 5 AGP 8 281法 1 の割合で時間がかかりました。 AGP法のほうが、UPよりも遅くなっているのが印象的です。 >>290 面白い記事ありがとうございます。 まさしくこれですね。
293 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 23:42:09 ] なんかやり方が下手な気がする ソースあげてみ
294 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 23:49:07 ] つかindexbufferも使えない素人のコードによる測定になんの価値があるんだ いつまでやる気だろ
295 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 23:57:00 ] >面白い記事ありがとうございます。 節子…それ、公式サンプルや 一般的な方法がわかって良かったんじゃね
296 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 23:59:00 ] まともなグラボならUP使ったほうが早いのは常識だろ 293とか294は典型的な2ch馬鹿だな
297 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:04:24 ] >>293 一番あやしいのは、逆に遅くなってるAGPのやつですよね。 pDev->CreateVertexBuffer( sizeof(D3DVERTEX) * 4 * MAX_SMOKE, D3DUSAGE_DYNAMIC | D3DUSAGE_WRITEONLY , MYFVF, D3DPOOL_DEFAULT, &m_buffer, NULL ); pDev->CreateIndexBuffer( sizeof(WORD) * 6 * MAX_SMOKE, D3DUSAGE_WRITEONLY , D3DFMT_INDEX16, D3DPOOL_DEFAULT, &m_index, NULL ); で生成し、毎フレーム下記のようになっています。 >>294 IndexBufferは使ってますよ m_buffer->Lock(0, sizeof(D3DVERTEX) * 4 * m_smokes.size(), (void**)&vertex, D3DLOCK_DISCARD); m_buffer->Unlock(); pDev->SetStreamSource(0, m_buffer, 0, sizeof(D3DVERTEX)); pDev->SetIndices(m_index); pDev->SetFVF(MYFVF); pDev->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 4 * m_smokes.size(), 0, 2 * m_smokes.size());
298 名前:294 mailto:sage [2009/07/10(金) 00:04:34 ] >>296 は?UP云々なんて一言も言ってないんだがw
299 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:05:10 ] >>296 その根拠は? >>292 動的バッファLock時のオプションは どうしてる?
300 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:14:21 ] >>297 む、こりゃちょっとひどい気がする スレちゃんと読んでないけど、xyzは毎フレーム変化してるんだよな? どのタイミングで更新してるんだい?
301 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:19:30 ] >>299 D3DLOCK_DISCARDですね。 m_buffer->Lock(0, sizeof(D3DVERTEX) * 4 * m_smokes.size(), (void**)&vertex, D3DLOCK_DISCARD); この行が、動的バッファのロックです。 LockとUnlockの間に「ここで頂点情報を書き込んでいます」とか書くべきでした。すいません >>300 え、初心者サイトのサンプルをほぼそのまま使ったのですが、妙でしょうか? xyzの更新は、Lockの前に行っています。 m_smokesというのが、ビルボードの中心座標の配列vector<D3DXVECTOR3>です。
302 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:24:23 ] ちゃんとD3DLOCK_DISCARDでロックしてるし、 動的バッファの取り扱いは、特に問題はなさそう。 へえ、これでUP系の半分の性能なんだ、信じられんw
303 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:29:11 ] >>302 オンボ環境ではしっかりUPのほうが遅かったので、環境によるような気がします。 明日再度オンボ環境の場所に行くので、再度慎重に測り直してみます。
304 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:30:56 ] >>301 うーむ、Lockの前に更新って、矛盾してないか このソースだとDYNAMICでバッファを確保した意味がないよ?
305 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:34:25 ] こりゃ計測方法も怪しくなってきたなw 両方のソース示さない限り無意味だろw
306 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:39:25 ] >>304 すいません。ちょっと更新の意味を取り違えているのかもしれません for(DWORD i = 0; i < m_smokes.size(); ++i) { m_smokes[i].y += 0.1f; } m_buffer->Lock(0, sizeof(D3DVERTEX) * 4 * m_smokes.size(), (void**)&vertex, D3DLOCK_DISCARD); for(DWORD i = 0; i < m_smokes.size(); ++i) { (D3DVERTEX) *p = &vertex[i * 4]; p[0].x = m_smokes[i].x - 0.5f; p[0].y = m_smokes[i].y + 0.5f; p[0].z = m_smokes[i].z; p[1].x = m_smokes[i].x + 0.5f; p[1].y = m_smokes[i].y + 0.5f; p[1].z = m_smokes[i].z; p[2].x = m_smokes[i].x + 0.5f; p[2].y = m_smokes[i].y - 0.5f; p[2].z = m_smokes[i].z; p[3].x = m_smokes[i].x - 0.5f; p[3].y = m_smokes[i].y - 0.5f; p[3].z = m_smokes[i].z; } m_buffer->Unlock(); こんな感じにやっています。 実際は座標のほかに、normal, color, uv もセットしています。 あと、もうちょいマシなコピーの仕方をしています。 >>305 単純に1000フレーム回るまでの時間を計測しています。 描画以外はほとんど何もやっていないのと、座標移動計算はまったくといってよいほど時間をくっていないのを確認済みです。
307 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:41:06 ] >>294 =>>298 =>>305 初心者スレ荒らして楽しい? 他人の足引っ張って立って、自分の価値を高めることにはならないぜ? 無意味だと思うならスルーしてなよ
308 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:43:46 ] 特に問題あるようなソースには見えないな UP系のほうが早い場合があるというのは面白い UPはドライバ側で何かしらの最適化を行っているのかもね
309 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:44:01 ] >>307 連続でお疲れさんw
310 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:45:48 ] 294 indexbufferも使えない素人が!(キリッ!! 297 >>294 IndexBufferは使ってますよ 腹抱えてワロタw
311 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:53:01 ] 久々に有益情報が出てるな 俺は何も考えずにDrawPrimitiveUP使ってた Instancingとやらを使うと速度が5倍になるとかマジパネェから俺も実験してみるわ
312 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:53:04 ] 俺のソースでは、mallocaで確保した一時バッファにデータを作ってから Lock→memcpyでまるごとコピー→Unlock と、 ロックしている時間が短くなるようにしてたな。 なんとなくその方が良かろうと思っただけで、計測してないから鵜呑みにはするな。
313 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:57:20 ] 294じゃないけど、よくおまえらそこまで無条件で信用できるな。 煽る気はないけど、ソースのないベンチなんて昔は弾いていた気がするんだが。
314 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 01:01:39 ] DirectX10使えば縮退ポリゴンもいらねーしデータ転送量も抑えられるしでウハウハ。 SO使えば座標更新もGPUで出来てさらにウハウハ。
315 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 01:06:14 ] >>312 D3DLOCK_DISCARDを指定すると、 一時バッファを用意してくれるらしいので その処理は冗長と言える。
316 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 01:16:45 ] 俺もGeforce9600GTなんで、さくっと試してみたよ DrawIndexedPrimitiveとDrawIndexedPrimitiveUP LVetexで位置のみ毎時更新 前者は動的バッファがたまり次第フラッシュ 後者もそれに合わせようと思ったけど、面倒なんでメモリ一括確保 疲れてるんで固定機能でやったけど、1万ポリでも誤差程度 寝る
317 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 01:20:16 ] >>316 そうなるはずだ。 UP系かそうでないかでそんなに差が出るというのはちょっとおかしいんじゃないか。 プリミティブの座標更新をGPUにやらせることで全体の高速化を図るというのならまだ分かるが。
318 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 01:30:53 ] >>316 結局描画におけるGPUの時間が変わらないからフレーム単位だと時間は変わらないが DrawPrimitive()とDrawPrimitiveUp()だと関数から帰ってくるまでの時間にかなり差があったと思うが。
319 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 02:04:48 ] DirectShowのスレでも質問したのですが、スレの勢いを考えてこちらにも質問させていただきます。 DirectShowでGeekなページを参考に動画再生をするプログラムを作りました www.geekpage.jp/programming/directshow/change-rate.php 参考URLでは『put_Rateの引数を2.0などに変更すると倍速再生になります。 put_Rateの引数に負の値(マイナスの値)を渡すと巻き戻し再生になります』 とありますが、 pMediaPosition->put_Rate(0.5); のput_Rateの引数を負の値にしても大部分のフィルタは逆再生をサポートしていないため実行されません。 そこでIMediaSeekingかIMediaPositionを用いて、または用いなくてもいいのでdirectshowで 動画の巻き戻しをするプログラムを作りたいのですが、どうすればよいのやら困っています。 何か良い考えはないでしょうか? 是非知恵をおかしください!
320 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 04:29:31 ] テクスチャのサンプリングをWrapにして何度も繰り返すような貼り方をすると負荷が高いと聞いたんですが これは本当ですか? 使用するテクスチャが小さくなるから、むしろこっちのほうが良いと思ったんですが 自分の環境( GTX280 )では違いが見られなかったんですが オンボードのような低スペックのビデオカードだと遅くなったりしますか?
321 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 08:27:10 ] うそです。
322 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 08:28:23 ] ゲームの動画再生にDirectShowはいつも使っているけど、再生速度の変更が必要になったことがないから知らない。
323 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 08:34:33 ] AGPっていつの時代だよw
324 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 09:08:50 ] ソース無いベンチなんて意味ないよ ということではあるそうですが、一応報告しておきます グラボつき(GF9600)の環境で試したところ、 UP系 5 AGP 8 281法 1 オンボ環境で試したとところ UP系 10 AGP 9 281法 8.5 くらいの処理時間になりました。 あくまで同一環境内での比率なので、GF9600の数値とオンボの数値には関係性はありません。 まったく同じ実行ファイルで実験しました。 >>316 私の実験と差がありそうなのは下記2つっぽいですね >座標だけ更新 座標だけストリームを分けて、そこだけ更新したということでしょうか? (私のは、座標のほかに法線・カラー・UVも毎フレームVRAMに転送しています) >前者は動的バッファがたまり次第フラッシュ これはどういう方法でしょうか? D3DLOCK_DISCARDではない方法ですかね
325 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 11:36:58 ] 定数レジスタの数について質問があります DX8時代は96 DX9時代は256 というのはなんとなく知っているのですが、これは頂点シェーダのバージョンに依存しているのでしょうか? もしそうだとして 定数レジスタを200個近く使っている状態で VertexShader = compile vs_1_1 vertexShader(); とやったとき、問題なく動作してしまうのが不思議です エラーもでませんし、見た目も問題なく表示されてしまうのです
326 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 12:08:32 ] 最低サイズが だろ? 詳細はcapsで調べれたと思う どのみち最低サイズを守った方が利口だが
327 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 13:03:54 ] ICH10RでSSD2台で7RCでRAID0組みたいです。途中でFDDからRAIDドライバ読み込み必要ですか?
328 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 23:54:37 ] >>324 です。 原因がわかりました。 どうやら、>>306 のように、ロックしてからループで書きこんでいくのはよろしくないようです。 >>312 のように、一時バッファを用意して全部メインメモリ上で書きこんでから、Lock。 memcpyでいっきに流し込みすぐUnlock とやることで、UP系と同等の性能になりました。 「これならUPでいいじゃん」って思ってしまいますね…。
329 名前:316 mailto:sage [2009/07/11(土) 12:23:40 ] >>324 なんの工夫もなくロックして位置や色を書き込み memcpy未使用 フラッシュはバッファに溜まったものを吐き出すって意味 今時使わない?俺もロートルか
330 名前:316 mailto:sage [2009/07/11(土) 13:00:33 ] memcpyでもやってみたが同じだな フォーラムをざっと見てきたが、UPはレガシー扱いで間違いないだろう ・UPはハードウェアサポートが約束されていない ・UPは中間バッファを勝手に使うからパフォーマンスが落ちる(チューニングしづらい) 少なくとも2倍から3倍のメモリを使う ・描画命令を出しても、完了してから制御を戻すわけでないので、UPのために確保したメモリがいつまで妥当であるべきかが不定 ・例え変化が無くてもmemcpyが描画命令のたびに呼ばれる(最適化が出来ない) 問題の件だが、冗長なメモリコピーがそのままUPのコストになるので、 扱う頂点数が増えるほどUPは不利になるだろう おそらく結果が逆転してしまうなら、正しく使えてないのだと思う
331 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 13:12:57 ] ロックが長いってだけで、1.6倍の遅延に繋がるとは思えない。 なぜそうなるのか、シナリオが作れない。 誰か説明してくれない?
332 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 13:35:23 ] >>330 ・描画命令を出しても、完了してから制御を戻すわけでないので、UPのために確保したメモリがいつまで妥当であるべきかが不定 流石にこれはないだろ。 UPを呼び出した直後に、確保したメモリーを壊してしまっても大丈夫だよ
333 名前:316 mailto:sage [2009/07/11(土) 14:12:18 ] >>332 さてどうだろうな 描画命令はFIFOで処理されタイミングは不定 投げ入れ側は(Sendではなく)Post扱い そしてUPの場合、向こう側で全コピーが必ず発生している 壊したメモリがたまたま生きていただけかもしれない *大丈夫だった*以上のことは言えないはずだ
334 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 14:15:00 ] UP系は関数から抜けたときにはソースのデータは破棄してOKなはず。 ようするに中でメモリ確保してコピーして保持してるって事だけどな。
335 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 14:21:21 ] ハハ、DrawPrimitiveUPは 何時クラッシュするかわからない ファイナルハゲマル丼的な関数というわけですね。 わかります。
336 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 14:23:18 ] >IDirect3DDevice9::DrawPrimitiveUP に渡す頂点データは、呼び出しの後も保持する必要はない。 >MicrosoftR Direct3DR は、呼び出しから戻る前に、そのデータへのアクセスを完了する。 >>330 の引用元の信用がガタッと減ったな
337 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 14:25:35 ] MSDNの記事くらいは読もうよ。 >IDirect3DDevice9::DrawPrimitiveUP に渡す頂点データは、呼び出しの後も保持する必要はない。 >MicrosoftR Direct3DR は、呼び出しから戻る前に、そのデータへのアクセスを完了する。
338 名前:316 mailto:sage [2009/07/11(土) 14:27:54 ] >>336 こりゃすまなかったな 引用元はよく使うGDevだ しかし全コピーが発生するのは間違いないだろう
339 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 14:30:06 ] >>336 だからこそUP系は遅いんだろ >>318 で既に出ているけど
340 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 14:30:50 ] UP系は中でDYNAMICなバッファのプールに対してLOCK_DISCARDと DrawPrimitiveを必要な数繰り返していると推測できる。
341 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 15:01:39 ] >>340 その間制御を戻さないならば、CPU時間が減るし、 コピー後に制御を戻すとしても、メモリとコピー時間が無駄なわけだよね。 どう考えてもUP系の方が速くなるはずがないのだけど、 そもそも質問主以外にそんな結果の人はいるんですかね?いないなら不毛な気が・・・。
342 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 15:16:29 ] 昔、散々会社で似たような検証してたみたいだけど 結局、使い方が悪いだけで変わらない(まあ、当然かw)って結論が出てたなw
343 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 15:20:01 ] だからといって、ある程度までの頂点数ならUP系でもほとんどペナルティーは無いわけだし、 種々のコンテナが使えるヒープメモリで間接的にレンダリング設定できるのはありがたい。 前作ったライブラリではUP系のみで実装した。 もっとも、現在製作中のライブラリは頂点バッファの確保/Lock込みで実装してしまったのでもう関係ない話だが……。
344 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 15:20:38 ] >>341 たんなるベンチ風に測れば速度は変わらないでしょ。 UP系は同期関数でUPじゃないほうが非同期って考えれば データ量が多くなってゲームなんかでCPUを使うようになれば差が出てくると思う。 3Dゲームで毎フレーム書き換える頂点データつったらエフェクトくらいしか思いつかないけど。
345 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 15:23:47 ] 2Dゲー作っててもたまに3Dゲーと同じような演出とかやりたいときあって 結局、UP系特化で作ったライブラリって開発してるとゴミになるぞ
346 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 15:37:54 ] UP系大好きなお前らに悲しいお知らせです。 ttp://msdn.microsoft.com/ja-jp/library/cc627093(VS.85).aspx >DrawPrimitiveUP と DrawIndexedPrimitiveUP はどうなったのですか。 >D3D10 で廃止されました。
347 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 16:16:24 ] >>340 で正解だな。加えて毎回バッファのプールを再作成していたような。 ロックで遅くなるってヤツは、メモリアクセス中にCPUとGPUがバッティングしたらどうすんの。 UP系だって結局中で同じことをせざるを得ない。UP系が未来の技術でない限りは。 しっかし100レス近くも費やす内容なのかねぇ
348 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 16:25:30 ] >>347 まあ、とんちんかんなベンチレポとそれに賛同したり火消ししたりが延々と続いたからな。 ソースをさらしてれば話は早かったんだが。
349 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 16:48:56 ] >>346 やっぱ、意味ないよねw
350 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 16:59:16 ] >>344 変わらないならOKでしょ。むしろ速くなるっていうからさ。 まー質問主というより、無条件で賛同しちゃっている人が悪いな。
351 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 19:25:56 ] 自演だろ
352 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 20:55:16 ] オンボ環境なら俺らが思ってるとおりの速さ順で、 GeForce9600GT下なら逆転する って言ってるのだから、何かしらあるんだろ 面白い事象だと思うがねー
353 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 21:04:14 ] それじゃあ俺クロシコの9600GT入れてるんですけどまずいっすねえ
354 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 22:05:35 ] >>352 さすがにもう来ないでくれ
355 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 22:20:58 ] 結局のところ逆転現象が起こる理由について誰も指摘できないわけか
356 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 22:30:09 ] ソースもexeもなしで何をどう説明できるんですか。
357 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 22:30:39 ] だから言ったろうに、端からチラ裏レベルの情報なんだから相手にする必要なし ソースコードも出せない怪しげな情報まき散らされると、 まともな初心者さんに迷惑なんですがねぇw
358 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 22:35:53 ] みんなソースを出せと平気で言うけど そんな簡単に出せるもんかね 誰も、使い捨てのテストプログラム作ってる訳じゃないでしょ そこは、非難する部分じゃない
359 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 22:40:48 ] >>358 三角プリミティブ表示にDirectDraw使ったら、D3Dと変わらなかったよ。 ソースは出せないけど、コードは絶対間違ってない! なんでこんな結果になるか説明して。環境?もちろん俺環境だお!
360 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 22:41:43 ] なんでもいいけどさあ あんまり初心者っぽくない人多いよね
361 名前:358 mailto:sage [2009/07/11(土) 22:45:21 ] >>359 同じ現象になる使い捨てのテストプログラム作って そのソースとEXEをアップしろよ
362 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 22:51:41 ] 色々な要因が絡んでる場合、うまく抜粋してソース出せるとは限らんしな それなりの報告とそれなりの信ぴょう性がありゃとりあえず「本当だとして」アドバイスするよ それが気にくわないならレスしなきゃいい
363 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 22:52:40 ] >>361 簡単に言わないでください。非難…批難イクナイ!! ボクの計測結果ならいくらでも出します。ほらDirectDrawの方が速くなりました なんでですか! …という流れだな
364 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 22:55:38 ] いずれにしろDirectX10ではなくなった。 DirectX11で復活することもないだろう。 過去のAPIの事はもういいじゃないか。 今からエンジン作るって人がDirectX9なんて選択しないし。
365 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 22:56:48 ] 後はゲ製でどうよ?IDもあるし ttp://pc11.2ch.net/test/read.cgi/gamedev/1234296058/ 遠慮する気があるなら質問者から移動してくれ マジで機能しねぇぞ初心者スレがw
366 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 23:22:10 ] 別に他の質問のやりとりもあるし>>325-326 なんで機能しなくなるのかわからん
367 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 23:39:48 ] 正直流れ速いと質問しづらいよ
368 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 23:41:25 ] >>364 え?2ヶ月前からDX9やり始めたんですけどDX10にしといた方がいいのかな? 持ってる本がDX9用だったんでつい・・・
369 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 23:45:00 ] >>368 もちろん最先端を勉強するとかいう目的ならDX10や11のほうが良い が、実用品を作る(売る同人ゲームとか)目的なら、古い枯れた技術のほうが良い そもそも10にしたら、XPユーザー全切りだぜ? 過去のAPIの事は〜とか言っちゃう阿呆は気にしないでいいよ。このスレのタイトルすら読めないみたいだし
370 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 23:46:10 ] しっかしとってつけたような質問だな
371 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 23:50:44 ] 10でも9でも好きなほうを使えばいい。 どっちみちWindows7が浸透するまで3年くらいはかかるだろうし。
372 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 23:51:20 ] いくら自己レスでも、初心者にDirectX11の勉強を勧ってすげぇな
373 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 23:52:03 ] そうだな・・・まあ興味本位でだから問題ないか ところでボーンのアニメーションを作ってみたいんですけど ID3DXAllocateHierarchy *p_AlllocHrachy; ってやってD3DXLoadMeshHierarchyFromXで渡すとエラー出るんですけどなんでですか? まさかこの辺は自分で作るんですか?
374 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 23:59:58 ] そうだよ
375 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 00:02:05 ] 了解 調べてやってみます
376 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 00:04:15 ] DirectX9を最初から勉強するならDirectX10を 最初からやるほうがはるかに簡単だけどな。 DirectX9は細かいルールを覚えていくのが面倒くさい。 一般に公開するなら断然DirectX9だけど。
377 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 00:23:50 ] パーティクルの件でお騒がせしているものです 再現コードができましたのでUPしておきました ttp://www1.axfc.net/uploader/File/so/26949 パス: particle です。 中にソースとEXEが入っています。 描画方法をクラスでわけてあり、TypeAがUPを使った方。TypeBがロックして書きこむほうです。 起動するとそれぞれで1000回ほど描画を行い、それぞれのかかった時間をダイアログで表示します。 (1)がUP系、(2)がロックです。 GF9600GTでは下記の結果になります。なぜか後者のほうが断然遅い…。 (1) 2641 ms (2) 4918 ms きっとTypeBのほうに何か誤りがあるのだと思うのですが、アドバイスいただけると幸いです。 ちなみに>>328 になるようにコードを書き直すと、だいたい同じくらいの速さになります。
378 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 00:27:52 ] キーワードが正しくありません
379 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 00:30:15 ] >>378 初心者スレ荒らして楽しい?ほんとに楽しい?
380 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 00:41:44 ] マジネタだったのか
381 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 01:01:27 ] MobilityRadeon9700だけど、 (1) 11849 ms (2) 11959 ms こっちは、ほぼ推測どおりの結果だね。
382 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 01:03:57 ] エラー: このリンクは無効です。 が出るけど荒らし認定されるのかしら
383 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 01:05:06 ] >>382 >>379
384 名前:382 mailto:sage [2009/07/12(日) 01:06:21 ] 試しにリロードしたら早速レスついているし こいつはずっと張り付いているんだろうか…
385 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 01:57:02 ] >>381 は自演か
386 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 02:15:06 ] つながりにくいんじゃない? パスは通ったけど俺も全然ダウンロードできない。
387 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 02:19:26 ] >>377 WRITEONLYで作った頂点バッファに対して読み取りアクセスしてるから遅いんだよ。 そこを修正したら、頂点バッファの方が速くなったよ。
388 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 03:49:19 ] >>377 移動してよ…
389 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 08:33:53 ] >>387 ありがとうございます。修正ができました。 代入しかしていないつもりでしたが、+=が実質参照していることに気が付けました。 WRITEONLYでも「読める」んですね…。 長々失礼しました。 一応言っておきますが、変なあおりレスとかはつけてません。こちらは質問させていただいている立場ですから。
390 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 08:48:16 ] 389です。 気になったので、D3DUSAGE_WRITEONLYの説明を調べてきました。 msdn.microsoft.com/ja-jp/library/cc324365.aspx >この能力を使って作成された頂点バッファからの読み出しは失敗する msdn.microsoft.com/ja-jp/library/dd188510.aspx >このフラグを使用する頂点バッファからの読み出しでは、メモリ アクセス時間が非常に低速になることがある どっちだよ!といった感じですが、結果を見るに後者のようですね。
391 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 08:57:10 ] そもそもVRAMへのアクセスはAGPだと書き込みに対して読み込みが劇的に遅い。 PCIeで改善が図られているが、メインメモリに比べればやはり遅いのでやるべきではない。
392 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 09:10:33 ] 御苦労さん 結果を報告してくれる質問者はいつでも歓迎だぞ やっぱム板こそID欲しいよなー
393 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 10:39:41 ] まともな初心者さんに迷惑なんですがねぇ(笑) さすがにもう来ないでくれ(笑) 自己レス(笑) 自演か(笑) エラー: このリンクは無効です。(笑) ほんとに屑が住み着いてるな 屑はさすがにもう来ないで欲しい
394 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 10:44:29 ] ファイルが見つかりません
395 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 10:54:08 ] このスレにクーラーが設置されました。 r──────────┐ | l王三王三王三王三l o==ニヽ | |王三王三王三王三| .| // ゝ 乂━━━━━━━乂_| `-=  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ / / / / / / / / / / / / / / / ゴーゴー
396 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 11:24:06 ] 解決したからファイル消しちゃったのかな?
397 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 12:05:44 ] DirectXSDKをインストールしてるなら DirectXのControlPanelでランタイムをDebugRuntimeに設定できる。 そうするとWRITEONLYへの読み込みを行った場合に ビデオカードやドライバに関係なくDirectX層でエラーを履いてくれるようになる。 世間に出すようなプログラムの場合は必ずDebugRuntimeでの動作確認をしましょう。
398 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 13:12:51 ] >>394 すいません、解決したということで削除してしまいました Lockした内容に対し v.x = 1.0f; v.x += data[i].x; という、+=を使っていたのが原因でした >>397 >DirectXのControlPanelでランタイムをDebugRuntimeに設定できる。 これ知りませんでした。 早速試してみたら、いろいろ細かいエラーが出たのでささっと直せました。 すばらしいですね。入門サイトにはぜひ書いておいて欲しかった…。 良い情報ありがとうございました。
399 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 13:45:37 ] >>393 ID無いと便利ね(笑)
400 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 14:15:52 ] ソース見れないが、あれだけ説明したのに、結局UPも何も関係なかったわけかい。 情報を小出しにするからだよ。一番ダメなパターンだろ。 煽られて終わってもしょうがないのに、変に擁護がつくし、逆に俺が煽られるし。 WRITEONLYの線は>>306 みて違うと思っていたが、じゃあ実際は別のコードなんだな。
401 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 15:53:17 ] いい加減にしないとこのスレ潰すから。 鬱だ死のうDirectXスレのように
402 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 16:35:19 ] >>400 一通り読んだが乙としかいいようがない。終始まともな回答ついているのねぇ。 原因は実装だからソース見ないと分からないってレスも早期にあるし。
403 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 18:46:35 ] 別にスムーズにソースでてきたと思うんだが >>328 の段階でレスが終わって、その後ソース準備をしてたわけだろ? 単に質問者がいないとこで勝手に煽りあいしてkskしてたのを、質問者のせいにするなよ
404 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 18:51:06 ] 再現ソースが出来てから質問しにくるのが最低限の礼儀だろ。 情報を小出しにするとか最悪すぎる。
405 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 18:57:34 ] >>404 別にそんなことはない。勝手に敷居を上げるなよ。 今回の件だって、蓋を開けてみれば、 動的バッファを扱う上でFAQと言えるべきものだった。 個人的には、ソースなんか無くても 証言だけでわかってしかるべきと思う。 まあ、全然わからなかった訳だが。
406 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 18:59:52 ] 今回の件WRITEONLYのバッファにREADしてるのが原因なだけだろ。 DebugRuntimeにしてりゃエラーでてたろ。
407 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 19:10:52 ] >>406 誰一人として「Debugランタイムがなんかエラー吐いてないか?」と言っていないわけで
408 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 19:18:52 ] もういいよこの話題
409 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 19:20:01 ] とりあえず次からは>>1 にDbugRumtimeについて書いておこうぜ 大抵の問題はあれのログ見ればわかる気がする
410 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 19:30:55 ] >>405 >>400
411 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 20:29:59 ] Windows7でもDX9使える?
412 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 20:33:29 ] DirectX3も動くだろ
413 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 22:24:37 ] tairanaporigondea)4wyd@)4-4fbweuyq@:s@ 表示するときにテクスチャの一部分を選んで貼り付けるにはどうすればいいの?
414 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 00:11:04 ] UVを適切に設定しろ
415 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 00:17:51 ] それは頂点に含まれているので固定です。
416 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 01:21:22 ] 描画時に変えられるようにしたいなら、データの時点で変えられるように考慮すべき。 どうしてもプリミティブ情報が確定してからいじりたいというのならシェーダを使う。 (UV座標変更かけるだけならvertex、pixelシェーダどっちでもいいかな?)
417 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 01:27:21 ] データがXファイルしかありません。モデリングツールは買えないので持ってません。 Xファイル読み込み処理は変えられません。レンダリングステートを設定するだけでなんとかさせてください。 …な予感。
418 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 01:50:51 ] いや、テクスチャステージステートで変えられるし 散々既出だよ
419 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 08:31:19 ] ┏━━━━━┓ ┏━━━━━┓ ┃┌─┬─┐┃ ┃┌─┬─┐┃ ┏━┛│ │ │┗━┓ ┏━┛│ │ │┗━┓ ┃┌─┼─┼─┼─┐┃ ┃┌─┼─┼─┼─┐┃ ┃│ │ │ │ │┃ ┃│○│ │ │ │┃ ┃├─┼─┼─┼─┤┃ ┃├─┼─┼─┼─┤┃ ┃│ │ │ │ │┗━┛│○│●│ │ │┃ ┃└─┼─┼─┼─┼─┬─┼─┼─┼─┼─┘┃ ┗━┓│○│○│○│○│○│●│ │ │┏━┛ ┃└─┴─┼─┼─┼─┼─┼─┴─┘┃ ┗━━━┓│●│●|●│○│┏━━━┛ ┃├─┼─┼─┼─┤┃ ┏━━━┛│ │●│●│○│┗━━━┓ ┃┌─┬─┼─┼─┼─┼─┼─┬─┐┃ ┏━┛│ │ │ │ │●│○│○│○│┗━┓ ┃┌─┼─┼─┼─┼─┴─┼─┼─┼─┼─┐┃ ┃│ │ │ │ │┏━┓│●│ │ │ │┃ ┃├─┼─┼─┼─┤┃ ┃├─┼─┼─┼─┤┃ ┃│ │ │ │ │┃ ┃│●│●│●│ │┃ ┃└─┼─┼─┼─┘┃ ┃└─┼─┼─┼─┘┃ ┗━┓│ │ │┏━┛ ┗━┓│ │ │┏━┛ ┃└─┴─┘┃ ┃└─┴─┘┃ ┗━━━━━┛ ┗━━━━━┛ Next:○
420 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 08:37:57 ] ┏━━━━━┓ ┏━━━━━┓ ┃┌─┬─┐┃ ┃┌─┬─┐┃ ┏━┛│ │ │┗━┓ ┏━┛│ │ │┗━┓ ┃┌─┼─┼─┼─┐┃ ┃┌─┼─┼─┼─┐┃ ┃│ │ │ │ │┃ ┃│○│ │ │ │┃ ┃├─┼─┼─┼─┤┃ ┃├─┼─┼─┼─┤┃ ┃│ │ │ │ │┗━┛│○│○│ │ │┃ ┃└─┼─┼─┼─┼─┬─┼─┼─┼─┼─┘┃ ┗━┓│○│○│○│○│○│●│ │○│┏━┛ ┃└─┴─┼─┼─┼─┼─┼─┴─┘┃ ┗━━━┓│●│●|●│○│┏━━━┛ ┃├─┼─┼─┼─┤┃ ┏━━━┛│ │●│●│○│┗━━━┓ ┃┌─┬─┼─┼─┼─┼─┼─┬─┐┃ ┏━┛│ │ │ │ │●│○│○│○│┗━┓ ┃┌─┼─┼─┼─┼─┴─┼─┼─┼─┼─┐┃ ┃│ │ │ │ │┏━┓│●│ │ │ │┃ ┃├─┼─┼─┼─┤┃ ┃├─┼─┼─┼─┤┃ ┃│ │ │ │ │┃ ┃│●│●│●│ │┃ ┃└─┼─┼─┼─┘┃ ┃└─┼─┼─┼─┘┃ ┗━┓│ │ │┏━┛ ┗━┓│ │ │┏━┛ ┃└─┴─┘┃ ┃└─┴─┘┃ ┗━━━━━┛ ┗━━━━━┛ Next:●
421 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 14:13:26 ] シェーダーって何なんですか? つまり受け取ったデータをどういう風に加工して画面に出力するかっていう 関数の一種なんですか?
422 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 14:26:09 ] >421 このページ読むとわかりやすいよ ttp://marupeke296.com/DXPS_No1_WhatIsProgrammableShader.html
423 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 15:23:08 ] ありがとうございます あとシェーダーを書いたとしてGPUによって 表示が違うとかという問題は起こるのでしょうか?
424 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 15:29:50 ] もちろん起こる それにシェーダーをコンパイルしたビデオチップが違うと 同じPCでも表示結果が変わったりする
425 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 15:34:57 ] >>424 それはない。 いちいち突っ込まれることを 書くから荒れる。
426 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 15:36:01 ] ちゃんと作れば同じになるな
427 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 15:38:27 ] そうですか ありがとうございました シェーダーに挑戦してみます
428 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 15:49:38 ] >>425 いや、おれも変わらないと思うんだけど なぜか変わるんだよね 解るなら説明してくれない? PC-AとPC-Bで開発してます まず同じプログラムからPC-AとPC-Bで作った実行結果を比べると テクスチャの浮動少数の精度のせいなのか微妙に結果に誤差がでます ただし PC-Aで作成した実行ファイルをPC-Bで動かした場合 実行結果はPC-Aで確認できるものと一緒 PC-Bでコンパイルしなおすと出来上がる実行結果ははPC-Bのものになる 逆の場合同じ なんで?
429 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 15:53:32 ] 同じ奴じゃあるまいな
430 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 15:54:21 ] Direct3Dはビデオカードによって出力結果が変わるのは常識なのに、 同一だと思っている人間がいることに驚きだ。
431 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 15:55:09 ] Utilities\bin\x86\psa.exe Utilities\bin\x86\fxc.exe のバージョン違いかな?
432 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 15:55:31 ] シェーダーってどうデータを渡して加工するかだけだから コンパイルは関係なくね? まあ精度の点は知らんしGPUそんなにいろいろないからわからないけど
433 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 15:59:36 ] ラデで問題ないものがゲフォで変だったことはあるな 結局>>426 だったのだけど、本当に見つかりづらかった
434 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 16:01:20 ] 変わるのはシェーダのバイナリではなく、 レンダリング時のピクセルの状態
435 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 16:04:57 ] >>430 だから PC-Aで作った実行ファイルを PC-Bで動作させた場合に動作がPC-Bに準拠してくれるなら納得なんだけど なぜか動作はPC-Aで動かした場合と同じになる これをPC-Bでコンパイルしなおすと 出来上がる実行ファイルはPC-Aのもと違った動作をする この実行ファイルをPC-Aに持っていくと 動作はPC-Aに準拠したものではなくPC-Bで動作していたときと一緒になる シェーダーはコンパイル済みじゃなくて.fxファイルに書いてある いまいち納得できないんだけど
436 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 16:13:31 ] PC-AとPC-BにインストールしてるSDKのバージョンは? 特にpsa.exeのバージョン
437 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 16:14:40 ] シェーダー関係ないのでは? 同じライブラリをリンクしてる?
438 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 16:16:39 ] >>435 fxファイルをコンパイルして出来たエフェクトオブジェクトを D3DXDisassembleEffectで逆アセンブルして、diffを取ってくれ。 双方に違いがないようなら、話を進めよう。
439 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 22:08:10 ] D3DXのランタイムのDLLが異なるだけだろ。 それをビデオカードのせいだと考える思考回路が、あまりにも馬鹿馬鹿しい。
440 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 22:17:49 ] お前らさ、なんで先日の質問者の(悪い部分だけを)真似した嘘質問にまともにレスしてるの? からかわれてるだけだろ
441 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 22:24:18 ] 元々こんな質問ばっかりだぞ? 前はまだ自浄能力があったけど
442 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 22:29:40 ] 自浄能力・・・?
443 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 10:35:50 ] ^2
444 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 22:56:27 ] SDK2008Nov入れてるんですけど、DirectPlayってなくなったんですか? ヘッダがみつからないんですが..... ネットワーク関係の機能ってどこにあるんですか?
445 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 00:12:12 ] WinSock
446 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 00:39:52 ] 8のSDKからヘッダだけひっこぬけばよくね? DirectPlayは8で終了だっけ? サポートとか心配ならおとなしくWinSockとか使えって話なんだろうが セッションとか考えるのだるいし音声セッションとかかなりめんどいし UPNPポートマッピングとか自作するのは資料少なくてかなり泣けるのでまじおすすめしない ただし、WinSockでDirectPlay並のものが実装できるようになるとかなりスキルあがるよ 時間が余ってるならチャレンジしてもいいかもしらん ただ、あくまでゲームつくるのが目的ってなら時間もったいなす DirectInput8だっていまだに使われまくってるから DirectPlay使ったっていいじゃない と思わなくもないが、否定派が多い木がします
447 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 01:00:06 ] DirectPlayはいまいち中途半端な感じがしたが・・・ ロビーサーバーがLinuxとかでもちゃんと通信できたっけ?
448 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 03:05:43 ] 今だったらboost.asioを使うのがいいのかな
449 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 07:33:12 ] DirectShowも消えたしなー
450 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 07:35:11 ] 消えたんだw何になったの?
451 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 07:37:06 ] DirectShowは消えたのではなく、Platform SDK入りをした。
452 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 08:02:42 ] DirectShowの設計はかなり酷い ソースをメモリから転送するだけでソースフィルタから書けってどんだけ
453 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 08:15:42 ] 阿良々木 暦のプログラマブルコントローラーの配線図 阿良々木 暦 「絶望した…。自分の配線図でさえも、きっちりし過ぎて何が何だか分からないことに絶望した…。」 阿良々木 暦の変直切り替えは、キハ110系と同様、自動で最適なタイミングで切り替えていきますので、 かなり複雑な電子制御方式であり、プログラマブルコントローラーで自動的にアイドル指令を出すような設計です。
454 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 08:16:30 ] >>449 昇格じゃん
455 名前:デフォルトの名無しさん [2009/07/16(木) 15:29:03 ] 市販のゲームって.xファイルとかが置いてなくてアプリケーション内に組み込んであるじゃないですか あれどうやってやるんですか?
456 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 15:36:42 ] いくらでもやりようはあると思うが。 リソースに入れて一連のAPIで読みだしてもいいし。
457 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 15:49:40 ] リソースに入れるにしろxファイルは使ってないわな
458 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 15:59:20 ] 普通は自前のオリジナルフォーマット使うだろう。 Xファイルは悪くは無いがいかんせん古い。 今は物理データやコリジョンデータやシェーダーパラメーター埋められないとなー。
459 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 16:20:00 ] 時代はVRML
460 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 16:31:43 ] Xファイルが有用だとは言わないが、 テンプレートを追加すればいくらでも カスタムデータを埋め込むことは可能なんだが、 埋められないとか言う前に仕様ぐらい確認して欲しいところだ。
461 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 16:42:55 ] >>460 あんなのに埋めこんでどーする 出力と入力を自前で書くハメになるから、それなら結局自前フォーマットで構わん
462 名前:デフォルトの名無しさん [2009/07/16(木) 16:57:08 ] デバイス->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR); これやるとテクスチャとテクスチャの隙間が白く見えるようになってしまった。どうして?
463 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 17:05:53 ] >>461 よくわからない理屈だな 結局、その主張に なにか根拠や理由がある訳じゃないんだね
464 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 17:11:44 ] というかあの質問は初心者のものだろ? つまりexeファイルだけ出力させてスッキリさせたいって話であって Xファイルの仕様云々じゃないと思うけど
465 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 17:13:48 ] >>461 有用かどうかはさておき、Xファイルの仕様として追加できると言ってるのに、 埋め込んでどうするとか意味不明なんだけど。
466 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 17:19:35 ] 質問者は、「とか」って言ってるからxファイルに限らないのだろう
467 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 17:58:04 ] だよなぁ ぽまいら脱線しすぎなんだよ モデルファイルとか音声ファイルをEXEの中に入れてしまいたい系の質問じゃないのか?
468 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 17:58:23 ] Xファイルに3Dデータを追加できるって主張は、 テキストファイルに3Dデータを追加できるって主張とほぼ同義だろ Xファイルを使うことが目的でない限り、何の意味もないわ
469 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 18:14:41 ] まあリソース埋め込みでいいのなら、カスタムリソースでググればいいかな。 使うのはFineResource、LoadResource、LockResource
470 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 18:44:16 ] >Xファイルは悪くは無いがいかんせん古い。 >今は物理データやコリジョンデータやシェーダーパラメーター埋められないとなー。 単にこれがアホな発言だというだけ。 わざわざデータを入れることに意味があるかどうかの是非に、話をすり替える必要はない。 これで無知を晒す前に確認することを学んだのならそれでいい。
471 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 18:51:38 ] まあXFileまわりも せっかくDirect3Dのコーポネントなら、 D3Dのリソースを直でシリアライズするような 機能があってもよかったと思うな。 なんだか知らんが、MSがRMと一緒に 即切りしやがったからな。
472 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 19:01:50 ] Xファイルは使わないとして、 初心者は何でボーンの木構造やアニメーション情報をやり取りすれば良いの? 素人の俺は、ToyStudioみたいなのにするのかなと想像してる
473 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 19:09:50 ] そもそもモデリングソフトは何を使用しているのかという問題がある。 まともにやろうとすると覚悟が必要な金額になる。
474 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 21:21:30 ] とりあえず趣味のレベルだからメタセコイアで XSIはちょっと重くて無理
475 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 21:31:43 ] 自分のゲームにどうやってモデリングデータを持って行くか話してる時に そのソフトを同列に書くってどういう事? 重いとかそう言う事じゃねーだろ
476 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 21:35:35 ] うるさいな
477 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 21:54:27 ] 実際個人で趣味程度につくるぶんにはメタセコ程度が価格的に限界でつ 別にCGやりたいわけじゃなくてあくまでゲームつくりたいだけだからなー メタセコにはモーション作る機能追加してほしいぜ で、Xファイルダメとか言ってるやつは実際どうしてるのかくらい書いてくれないと 参考にもならないおっおっお
478 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 22:00:48 ] 初心者がツール名をあげて、話を誘導するのかと思ったが ただの厨だったでござる 同じメタセコユーザーなので、MIKOTOやkeynote等のファイルリーダーを 作るとか、既にあるなら知りたかったな
479 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 22:05:32 ] どーでもいいけどファイル仕様で騒ぐなよ ここ初心者スレよー 初心者には難しくてわからんよー いや俺なんだけどね それよりさあID3DXAllocateHierarchyまわり面倒クセー やっぱりアニメーションは自分で何とかしようかなあ・・・
480 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 22:19:24 ] ∩___∩ | | ノ\ ヽ | / ●゛ ● | | | ∪ ( _●_) ミ j 彡、 |∪| | J <やっぱりアニメーションは自分で何とかしようかなあ・・・ / ∩ノ ⊃ ヽ ( \ / _ノ | | .\ “ /__| | \ /___ / なんというループ
481 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 22:24:22 ] >>474 メタセコイアもXSIも独自形式で書き出すプラグインとか作るのですか?
482 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 22:25:14 ] 昔アニメーションを別ファイルに書き込んでそれを読み込んで 手足を配置って方法取ってたけどいろいろめんどくさくてやめた
483 名前:249 mailto:sage [2009/07/16(木) 22:27:59 ] >>251 レスめちゃくちゃ遅れてすいません 自分でいろいろ試してみました。 1.StretchRect pSourceSurfaceにIDirect3DDevice9::GetBackBufferで取得したサーフェイスを指定 pDestSurfaceにCreateOffscreenPlainSurfaceで作ったサーフェイスを指定 領域は二つともNULL、フィルタはD3DTEXF_NONE →D3DERR_INVALIDCALLが返る 2.pDestSurfaceをCreateRenderTargetで作ったサーフェイスに変える 転送先のサーフェイスは上記のメソッドで作ってはいけないようだったので。 →CreateRenderTargetを実行時に強制終了 CreateRenderTarget(w, h, D3DFMT_X8R8G8B8, D3DMULTISAMPLE_NONE, 0, true, &lpDestSurface, NULL) 3.StretchRectではなくGetRenderTargetDataを使う →何とかコピーに成功 でもStretchRectと比べて制限が多いですし、できればStretchRectの方を使いたいです。 なぜCreateRenderTargetで強制終了するんでしょうか?何かおかしな指定してるんでしょうか・・
484 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 03:04:45 ] デバッグランタイムにすれば、原因わかるんじゃないの 失敗するときは、大抵ログ吐いてくれる
485 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 03:43:44 ] サンプルを落としてコンパイル→当然成功 少し書き加える→エラー 書き加えたところを削除して元に戻す→未解決の外部シンボルが大量に ふ ざ け ん な 何で元に戻したら悪化するんだよ糞が・・・
486 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 06:12:34 ] >>485 原因お前だろw
487 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 06:42:38 ] やっとできた・・・ 追加の依存ファイルに追加してなかったのが原因か・・・ これならだいぶ前にやったはずのに・・・ でもとりあえずコンパイルできるようになってよかった 8時間ぐらいかかったけどw しかし一度エラーが出たら元に戻してもエラーが出るというのは謎だ
488 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 07:03:23 ] >>487 どう考えても自分が原因なのにうるさい
489 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 09:40:02 ] Xファイルを自前の形式に変換してゲーム中に表示させたいので質問です。 AnimationKeyの番号が0で回転を表しているのですが floatが四つ並んでいます。 どうやら調べるとクオータニオンを使って変換するらしいのですが xyzwでクオータニオンってDirectXの関数で作れますか? 幾ら調べても見逃しているのか見つかりません。 また他にもframeに番号1(拡縮)と2(移動)があるのですが これ 拡縮行列x回転行列x移動行列の結果を影響のある頂点にかければいいのでしょうか?
490 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 09:43:24 ] d3dxのクオータニオン構造体あるだろ あれの要素がxyzwだからそのまま放り込めばおk
491 名前:489 mailto:sage [2009/07/17(金) 09:50:27 ] 盲点でした…。 クオータニオンってもっと複雑な物かと思ったいたら 中身はxyzwしかなかったのですね…。 ありがとうございます。
492 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 10:50:30 ] 盲点でもなんでもねえ
493 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 11:02:59 ] >>483 StretchRectはさまざまな制限があるけど、MSDNは確認した? めくら撃ちしたって時間の無駄だよ。 拡大・縮小がダメな場合もあるから領域指定がNULLなのも怪しい。 ちゃんと動くまではちゃんと指定してあげること。
494 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 15:02:08 ] DirectX関係ないな
495 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 15:03:10 ] あ、ごめん、リロードしてなかった
496 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 16:33:32 ] スキンメッシュで手とか足のボーンの位置とか傾きを取得するにはどうしたらいいですか?
497 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 16:37:24 ] 該当フレームの行列を確認すればいい
498 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 14:09:51 ] 頂点データを取得したいんですが D3DXLoadMeshFromXでLPD3DXMESH *ppMeshを取得して DWORD FVFSIZE; LPDIRECT3DVERTEXBUFFER9 ppVB; BYTE *pointVec; ppMesh->GetVertexBuffer(&ppVB); FVFSIZE=D3DXGetFVFVertexSize(ppMesh->GetFVF()); ppVB->Lock(0,0,(void**)&pointVec,0); とやってこのあとどうすれば頂点データを一つずつ取得できますか? FVFSIZEの分だけpointVecに足してやればいいんでしょうか?
499 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 19:02:25 ] フォーマット通りに並んでいるだけなんだから、 順番に取り出していけばいいだけ。
500 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 20:02:19 ] DirectX9のSDKで最新はどれですか?
501 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 23:39:52 ] ぼくしょうがくせいだけど それはDirectXデベロッパーセンターにいけばわかることくらいわかるよ
502 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 01:14:33 ] Xファイルのデータでボーンアニメーションって出来ますか?
503 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 01:51:32 ] うん
504 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 03:25:35 ] Xファイルをサービス関数を使わず独自の形式で読み取りたいです。 そこでモーションつきのモデルを読み込みたいのですがうまくいきません。 まずメッシュの頂点データと法線データとUVデータは全て読み込みました。 ちなみにメッシュは1メッシュです。マテリアル等は無視しています。 質問@ 「SkinWeights」の項目にそのフレームが影響する頂点とそのウエイトが定義されているのですが その一番最後に4x4行列があるんですがこれがよくわかりません。 これは親子関係を考慮しつつ各頂点にかければいいのですよね? 質問A 入れ子によって親子関係を定義している部分がありますが そこにあるFrameTransformMatrixはボーンアニメーションする場合は 一切無視していいのでしょうか? 調べてみるとアニメーションの概念ができる前から存在すると聞きました。 質問B 最後に「AnimationSet」の項目に ローテーション・スケール・トランスレーションが各フレーム毎にデータがあるんですが スケール行列xローテーション行列xトランスレーション行列で1つにまとめたあとに 影響する頂点にかければいいのですよね? 質問C これらの事をしてもときちんと動かないのですが何か抜けている点はあるでしょうか?
505 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 08:26:28 ] 質問@ いいえ ボーンの行列 = ボーンのオフセット行列 * 親子関係によって積算した後のフレーム行列 質問A はい アニメーションとそれは相互排他 質問B はい 質問C わかりません
506 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 08:29:55 ] まずは、スキンメッシュじゃなくて 普通のアニメーションするメッシュが 正しく動作するか確認して
507 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 09:41:17 ] 質問A 相互排他ではありません。 たとえばアニメーションに位置の情報が無い場合は そこから位置だけを抽出する必要があります。 当然アニメーションに回転が無い場合も回転だけ そこから抽出する必要があります。
508 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 10:33:35 ] >>507 その発想はなかった。確かにアニメーションデータに位置の情報がなければ(そんなXファイルつくるなw)引用する必要がでてくるな。 俺は、AのFrameTransformMatrixは「デフォルトポーズ」だと認識してるぜ
509 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 11:49:57 ] 回転と移動と伸縮を別に管理してるとどれか情報がないって事はよくあるけどな D3DXのはマトリックスしか持ってないんだっけ
510 名前:505 mailto:sage [2009/07/21(火) 14:46:52 ] >>507 FrameTransformMatrixが相互排他であるかないかは 多分ドキュメント類には記述はなく、未定義だろうから、 DXSDK関連のソースでもみて結論付ける必要があるだろう。 個人的には、>>507 は十分わかるんだが Xfileでアニメーションする際には、必ずFrameTransformMatrixの 分解が必要になる訳で、ちょっとナンセンスかなと思うな。 例えば、フレームの移動が必要ないなら、アニメキーは無しに、 全編を通して固定位置にしたいなら、キーを1つだけ用意する。 これで対応出来るし、こっちの方がスマートだと思う。
511 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 16:55:23 ] GDIかなんかで5頂点ポリゴン描画すると www.traum-projekt.com/forum/attachments/3748d1027598908-corel-draw-polygon-stern.jpg 真ん中がくりぬかれて描画されますが、 DirectXのDrawPrimitiveで 同じ5頂点を利用してこのような描画って できますか?
512 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 17:37:42 ] ステンシルバッファ使えば出来なくもない
513 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 19:08:08 ] >>511 >真ん中がくりぬかれて描画されますが は?
514 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 19:17:03 ] ROPなんてゲーム作るうえで誰も必要としてないから
515 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 19:19:08 ] XORな描画ステータスあったらいけそう
516 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 19:24:00 ] わざわざ5頂点でやる意味がわからない
517 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 20:18:54 ] 出来るかどうか聞いてるのに 文句言ってるやつって何なの?
518 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 20:29:30 ] まぁ文句出る気持ちも分かるけど >>511 DrawPrimitiveでやるなら、まずテセレーション(面倒だけどネットに情報あり)して三角形に分解後、 それぞれの三角形を塗るかどうか判定(三角形内部から適当に線を延ばし、他の辺と交わる回数が奇数なら描画) していくしかないね。 しっかしXファイルのことなんてレスつかないだろうから、帰ったらレスしようと思ったら、意外に皆詳しいなw
519 名前:504 mailto:sage [2009/07/21(火) 20:58:41 ] 皆さんありがとうございます 505さんの言うボーンの行列 = ボーンのオフセット行列 * 親子関係によって積算した後のフレーム行列 が何をさすかピンときませんががんばって見ます
520 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 21:06:07 ] >>517 明らかに馬鹿でウザイから まず具体的にやりたいことから言えって感じ 詳しく聞くとそんな仕様まったく必要ないのにくだらないもの探してるってオチだと思う
521 名前:483 mailto:sage [2009/07/21(火) 23:43:40 ] >>493 レスありがとうございます、ですが領域はNULLでもいいみたいです。 CreateOffscreenPlainSurfaceとGetRenderTargetを使ったコードを そのままCreateRenderTargetとStretchRectを使ったコードにしたら動きました! しかしこれが最も速く画像を取得する方法なんでしょうか。 GetRenderTargetData→転送先サーフェイスからGetDC、BitBlt StretchRect→転送先サーフェイスからGetDC、BitBlt GetRenderTargetDataは遅いそうですが、StretchRectはそれより速いのか分かりません。
522 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 08:55:23 ] >>512 が早々に適格なこと言ってると思うんだが まあ実際、面倒ならやらないわ―ってレベルだろ
523 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 12:57:58 ] D3DXMatrixPerspectiveFovLHのfovyは msdn.microsoft.com/ja-jp/library/cc324601.aspx このページのfov/2の値をのことでしょうか? 私のプログラムでは,fovyを90度ににすると歪んで見え, 45度にすると普通に見えます.また,SDK付属のサンプル も45〜60度で設定しているようです. しかし検索すると www.gamedev.net/community/forums/topic.asp?topic_id=512105 のページのように,fovyはfov/2ではなく,fovを設定すると書かれているページ に多く出会います.もしfovを設定するのだとすれば,fovyを45度に設定 することは視線から上側の視錐台の角度がたったの22.5度しかないことになって しまいます. 真相はどうなっているのでしょうか?
524 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 13:29:37 ] 自分の目からディスプレイの上端までと目から下端までの間の角度を測ってみ 90度もある? (あるとしたら、どれだけディスプレイに目を近づけてるんだ) 不自然だから歪んで見えるのでは?
525 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 13:32:37 ] ちゃんとラジアン角度にしてるか? D3DXToRadian(90);
526 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 13:42:41 ] >>525 もちろんしてます. SDKのサンプルも90度に設定して動かすとやはり歪んで見えます
527 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 15:18:44 ] >>526 >>524
528 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 21:51:21 ] 質問です。 Xfileを表示してキーボードでそれを動かし、当たりがあったら文字を表示するというプログラムを作ったのですが。 普通に起動させると動作が遅いのですが、メディアプレイヤーを起動している時だけはなぜか動作が速くなります。 なぜこんなことが起こるのか教えてください
529 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 22:07:34 ] cpplover.blogspot.com/2008/09/google-chrome_10.html これだろ
530 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 22:09:26 ] timeBeginPeriod メディアプレイヤー でぐぐってみれば、理由を考察してるサイトがいくつか見つかる
531 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 23:00:12 ] 一応解決しました。貴重な情報ありがとうございました
532 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 23:56:22 ] 3Dモデルを表示するソフトウェアを開発しています。 描画エンジンとしてDirectX9.0のDirect3Dを使おうと考え、 色々調査しているのですが、PCの画面色数が24Bitの場合、正常に動作しません。 Googleで調べた所、いくつかのソフトでは24Bitでは動作不可との記述が見つかりました。 ttp://postpet.jp/support/v3/manual/win/html/2_32.html ttp://mxengine.net-dimension.com/jpn/sub/faq.htm しかし、MSDNには24Bit動作不可との記述が見当たりません。 質問ですが、 DirectX9.0のDirect3Dウィンドウモードでは、16Bit/32Bit以外の動作は不可でしょうか? 24Bitで動作させる方法(コーディング例)がありましたら、ご教授お願いします。
533 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 23:58:58 ] ねーよ。 そもそも24Bitの画面モードが選べるような ビデオカードが現存してた事に驚いた。
534 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 00:00:08 ] 24ってマイナーじゃないの?存在を初めて知った
535 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 00:06:37 ] >>533 >>534 早速のレスありがとうございます。 実は配布先PCは特殊な環境で16Bit/24Bitのみ選択可、 通常は24Bitで動作しております。 すでに客先で動作しているPCであり、 客先は全国にある為、 インストールの為、画面設定を変更するのは難しいです。 やはり24Bitで動作させるのは難しいのですね。 最悪、DirectXではなく、他の描画ルーチンを使用することも考えています。
536 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 00:13:26 ] 24はVRAMが少量しかなかった時代に 少ないメモリでフルカラー表現するために存在した。 VRAMが豊富になって32Bitが使えるようになったら滅んだ。 24Bitって3Byte単位のアクセスだから速度がすげー遅かったし。 >>535 DirectX7か8のどっちかならいけるはず。 無論速度は度外視な。
537 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 00:14:40 ] どうせならOpenGLってどうかな?(いや、よくしらんけどw)
538 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 00:43:53 ] その前にビデオカードの具体的な製品名を明らかにしろよ。 なんでいちいち情報を小出しにするんだ?
539 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 00:46:31 ] それ大事か? しかし24なんて使ったことがないから可とも不可ともいいようがない・・・
540 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 00:48:12 ] D3D9は確かにディスプレイフォーマット24bitは サポートしてないみたいだけど、 それってFullScreenだけじゃなく Windowモードもそうなの?
541 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 00:49:54 ] MatroxのG200とかは24Bitモードあったぜ
542 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 00:51:14 ] >>540 デバイスの初期化が通らないよ。
543 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 00:53:58 ] どうやらVoodoo Bansheeあたりも24bitあったみたい。 しかし、Bansheeは良いカードだったw
544 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 01:05:03 ] ディスプレイモードの列挙が通らなくて強制終了だな 完全にサポートしてないと動かない
545 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 10:02:17 ] GF2MX400とかも普通に24bitモードあったぞ。 てか、24bitがマイナーだと初めて知ったw 当時、32bitこそ「無駄遣いだなぁ。24bitでフルカラー表現できるのに、なんだこの糞異端ボード」とか思ってた。
546 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 11:25:14 ] Direct3Dを使わないのが前提なら24bit対応のビデオカードは多い
547 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 11:30:19 ] でもわざわざ24bitを使う理由ってなに?
548 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 11:35:13 ] 質問者は、個人制作で自宅の24bit環境が普通だと思った メーカーがどうして用意したかは、上に散々かいてある 昔のPCI
549 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 12:51:38 ] 815あたりの内蔵グラフィック機能だと、32bppが無いんじゃなかったっけ? 16/24しか選択できなくて、3D機能が使えるのは16だけみたいな感じ。
550 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 14:53:47 ] スパロボのようなゲームを作っているのですが、 マウスで入力するために入力関係に特化したようなサイトとかありますか?
551 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 17:39:07 ] >>550 言いたいことはわからんでもないけどとりあえず日本語で(ry
552 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 17:42:04 ] たぶん碁盤の目のようなフィールド上でクリックしたら コマンドが出るようにとかしたいんだろうけど DirectXの要素はマウスの座標取得ぐらいしかねえじゃん
553 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 20:33:35 ] >>551 すいません、要するにスパロボのフィールド画面を作りたいんです >>552 そうです、まさにそんな感じです セルの上にマウスを置いたらセルを囲み、右クリック等でコマンドが出る・・等の構成にしたいのです ゲームのサイト色々見てるのですが、なかなか目的のものが見つからないのですよ とりあえずマウスの座標取得から始めてみますね
554 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 01:45:36 ] 作ったゲームのテストたのんだ友人の中の一人だけがエラーで止まるので いったい何が悪いんだと調べてみたらフォント描画が原因だった \r\nを含んだ文字列描画すると原因不明のエラー警告で落ちる \r\nを\nにしたらエラーでなくなったが、一体なにが悪いのかよくわかりませんでつた OSもDirectXランタイムバージョンも他の正常に動作してるPCと同じでつ
555 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 03:42:55 ] >>554 DirectXとOSのバージョンと描画方法は何ですか?
556 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 07:06:17 ] プログラム中の文字列の改行コードにCRLFって使った事無いなw テキストに落とす時は別だけど
557 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 08:30:56 ] >>554 落ちた1台が例外なんじゃなくて、 他のPCではたまたま動いたってだけの話だろうたぶん
558 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 13:50:58 ] 555は偉いなぁ…真似できん
559 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 17:36:51 ] 質問です DIRECTXで作られた質の高いフリーゲームってありますか?
560 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 17:47:19 ] ここはプログラムを作ることに関しての板ですゲームサロンにでもいってください
561 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 17:55:50 ] プログラマブルシェーダでのSetTextureについて質問です。 D3DXEffect effects[100]; for(int i = 0; i < 100; ++i) { effects[i].SetTexture("DecaleTex", textures[i]); } と、それぞれのエフェクトにそれぞれ別のテクスチャーをセットするとします。 これで、すべてのエフェクトが予想通りに動いているのは確認済みです。 このときに疑問が湧いたのですが、d3ddevice->SetTexture相当のことはいつ行われているのでしょうか? 1)effect[0]を使って描画 2)effect[0]を使って描画 3)effect[1]を使って描画 4)effect[1]を使って描画 とやった場合、2→3のところで内部的に行われているのでしょうか? となると 1)effect[0]を使って描画 2)effect[1]を使って描画 3)effect[0]を使って描画 4)effect[1]を使って描画 とやると、d3ddevice->SetTextureのコストという面では2倍コストがかかってしまっているのでしょうか? そもそも全てのエフェクトにテクスチャをあらかじめセットしてまわっておく。というのは正しいやり方なのでしょうか? 「d3ddevice->SetTextureはなるべく減らすように」と昔教えられたもので (実際に、パーティクルなどの表示で切り替えまくると遅かったし) かなり気になっています。 アドバイスいただければと思います。よろしくお願いします。
562 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 21:22:42 ] DX9ならBeginPassとCommitChanges DX10ならApply それ以外に公開情報あったっけ
563 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 21:23:32 ] 質問です。 d3d9.hの読み込みより前に #define D3D_DEBUG_INFO を設定することで、デバッグウインドウ上で情報が表示されるということで実践してみたのですが、 どう考えてもおかしな数値が入っているように表示されます。 これは皆さんの環境でそうなのでしょうか? 単なるD3Dの初期化>D3Dデバイスの中身をデバッグウインドウで見る>数値とかがぐちゃぐちゃ なのですが…。 環境はVS2008Express Microsoft DirectX SDK (March 2008) を使っています。
564 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 21:36:20 ] 君のプログラムの文字セットの設定は何だろう? ちなみにIDirect3DTexture9::NameはLPCWSTRだ。
565 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 21:40:51 ] マウスをクリックしたとき、どのオブジェクトをクリックしたかというのはどういうコードを書けばよいんでしょうか それとも、マウスをクリックした時にその地点にオブジェクトがあるかないかを総当りで調べるものなのでしょうか?
566 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 21:55:37 ] スクリーン座標をsx,syとする。 スクリーン座標の手前(sx,sy,0) 奥(sx,sy,1) を3D空間の座標に変換する (=3D空間の座標をスクリーン座標にする変換の逆) 2点を結ぶ直線と最初に交差したオブジェクトを選択。 総当りで問題なくOKなら総当り。 総当りでは重いならばケースバイケースで効率的な方法を考える。
567 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 21:57:32 ] >>566 うおおおおありがとうございます
568 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 22:12:08 ] >>566 直線だけだと漏れが出ないか? 四角錐じゃないと。
569 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 00:05:32 ] >>563 について自己解決です 注 オブジェクトのプロパティ名が表示されますが、この値はデバッグのランタイムが有効な場合のみ正確です。リテール ランタイムに対して実行するときは、値は無効です。 とありました。 DirectX Control PanelからUseDebugVersionOfDirect3D9 を選んだところきちんと値が見られるようになりました
570 名前:デフォルトの名無しさん [2009/07/25(土) 13:52:15 ] D3DXIntersectを使って当たり判定をしてる人がいましたらご教授願います。 表示した3dモデルに対して現在一体にしか当たり判定が有効になっていません。 複数のモデルに対して当たり判定を有効にするには何か特別な仕掛けをしていますか?
571 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 18:12:35 ] 自分で組め
572 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 20:11:23 ] まともなゲームならほとんどすべて、 詳細な当たり判定より先におおざっぱで高速な判定をして 比較するオブジェクトの数を減らす。 最終的には、D3DXIntersectだろうが自作だろうが 当たり判定の必要な回数だけ繰り返す。
573 名前:デフォルトの名無しさん [2009/07/25(土) 21:14:18 ] レスありがとうございます!
574 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 00:22:28 ] このスレの70%はゲー専生で構成されているとかいないとか
575 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 01:14:25 ] そんなことはない。 大学にも行かず浪人にもなれず就職もしない人は実社会では多数派でもないし ゲーム業界内でも少ないだろう。2流3流大卒がほとんど。
576 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 01:51:48 ] 数学とかそこらは、中学レベルだと感じるな。
577 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 09:42:08 ] というかそんな高度な知識がなくても組めるし まあ効率とかを考えるといろいろむずかしくなるけれども
578 名前:デフォルトの名無しさん [2009/07/28(火) 07:57:06 ] 今、線分とメッシュとの当たり判定を作っています。 中身は線分と三角形との当たり判定を行っているのですが、 そのために必要な三角ポリゴンデータを、 DirectXのメッシュデータから取得する方法がわかりません。 頂点バッファのロックメソッドから、頂点データへの先頭アドレスを取得し そのアドレスから12byteずつずらしながら、無理やり三角ポリゴン(と仮定したデータ)を取得し 当たり判定させてみましたが、途中から頂点のデータが「3.587e-043#DEN」などと壊れるようです。 ご存じの方がいらっしゃれば、ご教授よろしくお願いします。
579 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 08:08:47 ] >>578 空間上の特定の点がポリゴンの内包する閉空間状に存在するか(要するに当たり判定)は 計算幾何学の分野で、一応n log nのオーダーで出ることは知られているけど 計算が死ねるのでよしたほうがいい。 大学の研究レベルでやるならともかく、ゲームでやるなら質点同士の運動と考えれば十分なはず。
580 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 08:22:50 ] ttp://sukima.vip2ch.com/up/sukima026731.jpg 江戸時代の人々はこれで抜けるんなら ある意味聖人だな
581 名前:デフォルトの名無しさん [2009/07/28(火) 08:28:13 ] >>579 レスありがとうございます。 線分と三角形の当たり判定は、テストデータで計算出来ていることは確認しています。 ですので、知りたいのはポリゴンデータの取得なのです。 わざわざレスくださったのに申し訳ないです。
582 名前:デフォルトの名無しさん [2009/07/28(火) 08:31:38 ] >>579 すいません、読み違えてました。 Xファイルで入力してるので、問題ないと思っているのですが 無理でしょうか?
583 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 12:25:04 ] >>578 12byteの根拠は? 頂点データにはxyz以外も含まれていると思うので、12byteではないと思うが。 ID3DXBaseMesh::GetFVFでメッシュのFVFを取得してD3DXGetFVFVertexSizeで 頂点データのサイズを取得するか、ID3DXBaseMesh::CloneMeshFVFを使って 都合のいい頂点フォーマットに変換してから扱うのがいいかと。
584 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 12:59:33 ] 最近DirectXを勉強しはじめました。 初心者丸出しですが、質問させてください。 DirectXで2Dを扱う場合、Spriteを使用する方法と 座標変換済み頂点を使用する方法があると知りました。 また、座標変換済み頂点を使う方が処理が早いという書き込みも チラっとみたのですが詳しく書かれておらず、把握している程度です。 質問は @Spriteか座標変換済み頂点のどちらを使用すれば処理が早いか。 ASpriteと座標変換済み頂点の両方の利点・欠点。 よろしくお願いします。
585 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 13:21:14 ] スプライトというのは、本来のDirectXの姿を隠して ユーザが扱いやすいようにラップしているだけで、 最終的に頂点を組み立てて描画するのは同じ ラップしているオーバーヘッドのぶん、処理が遅いかもね
586 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 13:22:42 ] >>584 D3DXSprite自身が、内部的に座標変換済頂点(rhw)を使ってるんだが、どうよ? 単体の画像を何枚か扱う程度ならこのままでもいいが、小さなチップを大量に描画するようなら 通常の頂点バッファ(Position)を使うことを考えた方がいい。
587 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 13:22:55 ] DirectXにSpriteなど無い
588 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 13:24:51 ] D3DXSPRITEなら定数として存在するが、D3DXSpriteなど無い
589 名前:デフォルトの名無しさん [2009/07/28(火) 13:39:16 ] >>583 D3DXGetFVFVertexSize( mesh.pmesh->GetFVF() ); として取得したところ、返された数値は12でした。 ですので12byteと判断しているのですが……。 もし不都合があれば教えてください。 よろしくお願いします。
590 名前:584 mailto:sage [2009/07/28(火) 13:50:35 ] ttp://marupeke296.com/DXG_CreateBorad.html ttp://marupeke296.com/DXGSmp_No2_2DPoly.html 座標変換済み頂点は、ここの内容を見てます。 >>585 つまり結局は同じ処理をしているという事ですか… >>586 >通常の頂点バッファ(Position)を使うことを考えた方がいい 通常の…ですか。勉強不足で通常というのがよく分らないのですが 上記のURLにあるコードのような使い方をする場合 「小さなチップを大量に描画」というのは不向きなのでしょうか?
591 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 14:04:27 ] 流体力学研究所とかいうとこを参照してみては?
592 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 15:10:47 ] >>589 途中から?それって頂点データを超えて取得してるんじゃないの? GetNumFacesとかGetNumVertices使ってる?
593 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 17:51:19 ] | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| | | | | /  ̄ ̄ ̄ ̄ /_____ / また旅に出ます /ヽ__// / / / / / 探さないで下さい / / / / ____ / / / / / / / / 光 圀 / / /  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄/ / / のパターンじゃないんだな
594 名前:デフォルトの名無しさん [2009/07/28(火) 21:15:24 ] >>592 使用している部分について、ソースをアップしました。 www1.axfc.net/uploader/Sc/so/22044 もしよろしければ、ソースをダウンロードしていただいて 見てもらってよろしいでしょうか? GetNumFaces、GetNumVerticesは、一応数値は取得していますが 実際のところどのようにしてポリゴンとして頂点が格納されているのかが まだ分かっていません。
595 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 02:52:06 ] pvertex + fvfsize らめぇぇぇぇぇ
596 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 02:55:49 ] あれ?そこだめなの? 俺は v1=*(D3DXVECTOR3*)(pointVert+FVFSIZE*(indexp[0])); v2=*(D3DXVECTOR3*)(pointVert+FVFSIZE*(indexp[1])); v3=*(D3DXVECTOR3*)(pointVert+FVFSIZE*(indexp[2])); ってやってるけど問題ないぞ
597 名前:594 [2009/07/29(水) 03:29:12 ] >>595 試しに pvertex[*(pindex+i)];と配列でアクセスしたら幸せになりました。 理由はわかりません。 今回わかったことは、頂点バッファ内に「三角形ポリゴン数×3」個の頂点が格納されているわけではないので インデックスバッファも使ってアクセスしないときちんと読み取れないということでした。 凸凹の大きいモデルを使った場合、ポリゴンの読み間違いが起こると、Hitが抜けなかったり、 本来あるはずない場所でHitが出たりなどという現象が起こるのは当然でしょう。 しかし、今回の問題は読み込んだ数値自体がおかしくなっていたことでした。 明らかにストライドの量がおかしかったんだと思いますが、何が理由かよくわかりません。 >>596 私の環境でも結果は駄目でした。 突き抜けた穴のあいたポリゴンを使用してテストしていますが、 途中でHitが出てしまいます。 本当に助かりました。 協力してくださった方、ありがとうございました。
598 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 03:30:46 ] (pvertex + 0) の次の頂点は (pvertex + 1)なんだぜ
599 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 03:38:42 ] poly.v[0] = *(Point3D*)((BYTE*)pvertex + fvfsize*(*(pindex+i-2))); poly.v[1] = *(Point3D*)((BYTE*)pvertex + fvfsize*(*(pindex+i-1))); poly.v[2] = *(Point3D*)((BYTE*)pvertex + fvfsize*(*(pindex+i-0))); こうするか、 もしくは最初からpvertexをBYTE*で宣言すればOK
600 名前:594 [2009/07/29(水) 03:50:17 ] >>599 動作確認出来ました。 pvertexがD3DXVECTOR3*型だったから駄目だったんですね。 ポインタのアドレスって、どんな型であろうと変わらないかと思っていました。 ポインタのアドレスを弄るときはchar*なわけですね。 すごく助かりました。 今度C言語の参考書よみなおします。
601 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 02:17:57 ] 初心的質問ですみません。 DirectXを使っているプログラム内でwavを再生させるにはどうすればよいのでしょうか? ほとんどのところでdmusici.hを使えとなっているのですが、ヘッダーをインクルードしても見あたらないというので調べたところ廃止(?)になったとかで書かれていて いくつか調べたのですが、ほとんどのところがdmusici.hを使ってでのやり方なので、解らずじまいです。 現在の再生方法をおしえていただけないでしょうか?
602 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 02:21:17 ] おとなしくDirectSoundを使ったほうがいい
603 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 02:57:27 ] 普通にXAudio2使えよ
604 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 10:26:20 ] XBox360の市場が壊滅状態でもXAudio2はヤバくないんですか?
605 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 11:15:28 ] 実際のところ、X〜〜 ってどうなんでしょう。 XAudio2って言うほどまともとは思えないんですが。
606 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 12:12:44 ] 失礼します。 directx_mar2009_redist.exeをCドライブにインスコしようとするのですが、 必ず半分ぐらい進んだところでゲージが巻き戻り、結局右端までたどり着かず 途中で終了してしまうのです。一体どういうことなのでしょうか
607 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 13:14:58 ] 炎や爆発、煙などのエフェクトをビルボードを大量に出して 描画しようと思っているのですが、どうすれば高速に描画できますか。
608 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 15:09:40 ] 現状のエフェクトでどんな処理をやっているのかが分からないので、 より高速な方法について答えようにも答えることができません。
609 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 15:38:19 ] 大量に出すのをやめる
610 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 15:43:31 ] より高速かどうかは置いといて、 最も早いと思われる描画方法を教えてください。
611 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 15:44:56 ] マジレスすると 視錐台クリップが最重要だな 次にその中に入ってしまったものをまとめて描画だな あらかじめDrawPrimitiveにぶち込んでしまうとクリッピングされないから ある程度の塊でおおざっぱな判定でもするといいよ なんにせよクリップ方法が最重要 これでしっかり省けば余計な最適化いらない場合のが多いよ
612 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 15:46:35 ] >>610 それはいつでもどこもでネタでもなんでもなく「描画しない」ってのが最速
613 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 16:00:32 ] >>611 まとめて描画とは、Zsortをして 板ポリ(2ポリ4頂点)×出す量 を毎フレーム描画 ということですか? >>612 描画しなかったら私のも速くなります。 しかしビルボードをたくさん描画すると重くなるのです。
614 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 16:31:13 ] やめろよ また不毛な議論が始まるぞ せめてどうやってるのかも書かない奴に 答えてどうする
615 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 16:53:11 ] >>614 カメラ空間でのZ値でZsortして、板ポリ一個一個毎フレーム 逆行列作る worldViewProjectionMatrix作る effect->SetMatrix でセットし effect->setTechnique effect->Begin effect->BeginPass effect->setTexture effect->CommitChanges ここでdeclarationをセットし DrawIndexedPrimitive((D3DPT_TRIANGLELIST....); effect->EndPass effect->end と普通にやっています。
616 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 16:57:07 ] >>613 その前にクリッピングそれができないなら気にしなくていい
617 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 17:11:27 ] >>616 そうですか、今回作るゲームが引いた視点なので 結構、というかほとんど視錐台に入るんですよね…
618 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 17:23:29 ] 特殊な条件、爆発の煙や湿原の霧でパーティクルが数百個くらい普通に出てるような状況。 ポリゴンを自前で座標変換後したあとにバッファにためておいて、バケツソートで数個のブロックに分けて描画とか。
619 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 17:42:07 ] >>618 >ポリゴンを自前で座標変換後したあとにバッファにためておいて、 >バケツソートで数個のブロックに分けて描画とか。 ちょっと良く分からなかったのですが、 座標変換は存在するすべてのビルボードパーティクルに対して行い(頂点座標を書き換えるのでなくてワールド座標) それらビルボード一枚一枚をzソートするクラスに溜めています。 そしてzソートし、一気に一枚一枚描画しています。 ブロックごとに分けて描画するとなると ブロック内のz値の順番はうまくいきますが ブロックごとのz値の順番がおかしくなりませんか?
620 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 18:01:08 ] ソートした後で分割
621 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 18:29:54 ] >>620 分割する意味がわかりません
622 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 18:40:22 ] もしかしてポリゴン1枚づつDrawPrimitveしてるの
623 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 18:51:59 ] そうです。
624 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 18:58:04 ] そりゃないわ。 炎を100個のビルボで表現しているとするなら、その100個は1回のDrawPrimitiveで描画してしまいなさい。 ところで、加算合成なら前後関係をソートする必要がないのは知ってるか? 半透明にしても、ソートがてきとーでも、そうそうばれないからあまり気にするな。 炎単位でソートするくらいで十分。ビルボ1つ単位でソートしてたらすさまじいことになっちまうぜ。
625 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 19:17:12 ] >>624 >炎を100個のビルボで表現しているとするなら、その100個は1回のDrawPrimitiveで描画してしまいなさい。 いったいどうやるんですか? 頂点バッファに全ビルボードの移動後の頂点を入れておくとかですか? そうだとすると、フレームによってビルボードの数が変わるので 毎フレーム頂点バッファを作りなおさなくてはいけなくなりませんか? 全加算なら単純に足すだけですから、炎とかならいいと思いますが ミサイルなどの手前から奥に飛んでいく煙を表現する場合の線形合成は(今回使います) ソートは必須です。 しかもいくつもミサイルが飛んでいる場合それらの煙単位でソートしては 煙1と煙2が重なった場合板ポリの輪郭が見えてしまいます。 なので煙全部でソートしないとうまくいかないんです。
626 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 19:22:06 ] ここで以前DrawPrimitiveUPや動的頂点バッファの話をしてたが、 まさに枚フレーム書き換えるような頂点のためだよ
627 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 19:25:30 ] >>625 >頂点バッファに全ビルボードの移動後の頂点を入れておくとかですか? それでOK。 頂点バッファを毎フレーム「作り直す」のはつらいので、500ビルボード分作る。 MSのヘルプによると、一回のDrawPrimitiveでは1000ポリくらいが適切だということなので、ビルボは三角形二つだから500ビルボード分ね。 ミサイルの煙を半透明でやるのね。OK。 「気にすんな」でOK とりあえず試してみ。前後関係が狂っててもまったく気にならないから。 「気にならない」正確さより、「気になる」処理落ちを防ぐのを優先。 >煙1と煙2が重なった場合板ポリの輪郭が見えてしまいます。 半透明の物体を描くときは、Zバッファへの書き込みをOFFにするべき。 そうすればこの現象は起きないよ
628 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 19:28:30 ] >頂点バッファを毎フレーム「作り直す」のはつらいので、500ビルボード分作る。 500ビルボード分の大きさで作る。のほうがわかりやすかったね。補足。 描画するたびに中身を書き換えて使うべし。 ロックする際D3DLOCK_DISCARDを指定すれば、ロック待ちも発生しないので早いぞ。
629 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 19:33:42 ] >>626 毎フレーム書き換えるのは頂点バッファをLock,UnLockして書き換えるより 頂点シェーダでやったほうが高速だと思ってたので、すべて頂点シェーダでやっています。 それはスキンメッシュのスキニングをシェーダでやったほうが 何倍も高速だったのでそう思っています。 DrawIndexedPrimitiveを何回も呼ぶより バッファ作ってLockして書き換えたほうが速いということですか? 上のほうで言ってたことは 結局はDrawIndexedPrimitiveもUPも大して速度は変わらないという結論ですよね。
630 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 19:43:28 ] >DrawIndexedPrimitiveを何回も呼ぶより >バッファ作ってLockして書き換えたほうが速いということですか? 書き換えたほうが速い。 というのも、DrawIndexedPrimitiveの呼び出しオーバーヘッドは遅いので。 頂点シェーダでやると高速化するのは確かにそうだが、やるなら281法をやることになる。 確かにID3DXEffect::SetVectorArray()で座標情報を渡すのが大抵のグラボで最速。 ただ、定数レジスタの数の制限を考えるに1回につき250ビルボ程度しか描画できない。 あとは場合によりベターな方法は変わる。 まとめて描画する単位が250ビルボ以下ならこちらでいいと思われ。
631 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 19:50:21 ] 固定的な頂点バッファとは別に、毎フレーム書き換わるデータ向けの動的頂点バッファがあるの。 その違いを分かってないから、スキンメッシュとの比較検証も、効率悪いやり方でやった場合の結果にすぎない。
632 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 19:59:06 ] >>630 複数の頂点情報ストリームを登録しておいて、片側を毎回書き換えるという方法が考えられるな。 (で、VertexShaderで合算する) 計算がいくらか楽になるかもしれない。どれくらい速度が変わるかは試してみないと分からないけど。
633 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 20:02:57 ] とりあえず、281法含めて色々実測した身としては、 UPだろうがUPじゃなかろうが、頂点シェーダを使う方法だろうが 「沢山のビルボードを、まとめて一回のDrawIndexedPrimitive*で描画する」という基本を守っている限り、 速度誤差は0.1%にも満たないということだ。 小難しいことを考えるが面倒なら、DrawIndexedPrimitiveUP使っておくといいよ。 (レガシー関数だから嫌というこだわりがなければ。ね) 本気で速度の差はほっっっっっとんどでないから。 まぁ、流石マイクロソフト。DrawIndexedPrimitiveUPの中身もちゃんと最適化されてるんだなといったところ。
634 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 20:11:38 ] >>627 >一回のDrawPrimitiveでは1000ポリくらいが適切 それは知りませんでした。 >半透明の物体を描くときは、Zバッファへの書き込みをOFFにするべき。 >そうすればこの現象は起きないよ そうですよね、なるほど! >>630 >書き換えたほうが速い。 >というのも、DrawIndexedPrimitiveの呼び出しオーバーヘッドは遅いので。 そうなのですか。 >>631 Lockして書き込む際のD3DLOCKの種類のことですよね? ここはよくわかっていませんでした。 D3DLOCK_NOSYSLOCKを指定していました。 Lockの際に、D3DLOCK_DISCARDを指定すれば動的頂点バッファになるということですね。 CreateVertexBufferの第二引数はD3DUSAGE_WRITEONLYでOKですか? いろいろやり方が見えてきたので早速試してみたいと思います。 ありがとうございました。
635 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 20:55:13 ] WRITEONLYが適切。 だけどこのスレで「間違えて読み込みしてて、性能だだ落ちしてた」ってのが実例としてあったから気をつけるこった。
636 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 21:10:38 ] 質問です。 2D描画時のテクスチャー矩形転送のお約束として、 転送先座標を-0.5fするというのがありますよね。 あれの意義はわかりますし、そうやっているので普段は良いのですが、 拡大転送する際「テクスチャーの参照の際、隣のドットの色が影響してしまう」現象が起きるようです。 これを回避する方法はないでしょうか? LINEARを使わず、NEARPOINTでやればいいのでしょうが、拡大の粗が見えてしまいますので・・・。
637 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 21:19:08 ] 一枚のテクスチャの中で別パーツと混ざるのが嫌なケース? そりゃ周囲には1ピクセルずつ余白を置くとかじゃね。 昔の2Dゲームのような32x32のチップをぎっしり敷き詰められたデータなら、諦めるか、34x34で置き直すとか。
638 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 21:36:52 ] はい、そのケースです。 やっぱり余白しかないですか・・・。 縮小ならわかるのですが、拡大でも周りを参照しちゃうのがちょっと納得いかないところなんですが・・・
639 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 21:39:12 ] 状況が許すなら、まず拡大しないブリットでチップを レンダーターゲットのテクスチャに敷き詰めて そのテクスチャを拡大するって手はある
640 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 21:46:51 ] >転送先座標を-0.5fするというのがありますよね。 そのやり方は正しいと思えないんだが。 むしろUVを半ピクセルずらすのが正しいやり方だろ? UVをそのままで表示座標を変えてごまかしたりするから、表示倍率を変えると狂っちゃうわけで。 UVマッピングの詳細はMSDNにちゃんと書いてあるので確認すること。 ちゃんとやったらチップを画面いっぱいに並べようが拡大しようが、ずれたりすることはないよ。 現に手元で動いてる。
641 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 22:03:18 ] >>640 0.5ずらすのは 「バイリニアフィルタを適用している時に」 「頂点座標をスクリーン座標に直接マッピングすると」 ピクセルがテクセルの中心にマッピングしてしまい、拡大してなくてもぼやけてしまうのを防ぐためでしょ。 だから表示倍率を変えると云々はそもそも文脈としておかしいんだが。
642 名前:641 mailto:sage [2009/08/01(土) 22:06:18 ] うん、俺の文もおかしい。 x テクセルの中心 o 4テクセルの中心
643 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 22:16:46 ] >>641-642 オレの言ってることと君の言ってることはほとんど同じような気がするんだが、どうだろうか。 当倍表示の場合は636でも640でもいいが、拡大表示したら636ではおかしくなる。 そういうことだろ? というか、そんな細かい処理をするときはフィルタはNoneにしたほうがいいと思うんだが。 拡大・縮小はきたなくなるけどな!
644 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 22:20:30 ] >>640 一応 ttp://msdn.microsoft.com/ja-jp/library/bb219690(VS.85).aspx これには目を通しています これでも、ほかのサイトでも、転送先座標を + xy(-0.5f, -0.5f) するように思えます 640さんの方法は、拡大しても隣の色を巻き込んだりしないのでしょうか? 一応「座標はそのままに、UVを半ピクセルプラスする」方法でもやってみましたが、やはり拡大時には隣の色を巻き込んでしまうようです。
645 名前:641 mailto:sage [2009/08/01(土) 22:29:42 ] >>643 拡大するとおかしくなるんじゃなくて隣の色を拾うんだから アルゴリズム上は正確な挙動だよ。 てゆーか言ってるのはテクスチャ座標を0.5テクセル分ずらす方法だよね? 言い忘れてたけど、その方法だと拡大はせずに反転した時に 完全なミラーにならずに一ピクセル分表示がずれちゃうよ。 そっち方法で隣の色を巻き込まないってのは、うーん、 手元で試せないので「そんな馬鹿な」としか言いようが・・・
646 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 23:11:12 ] FFT式に回転させるとそんな苦労も水の泡だぜ
647 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 23:29:58 ] 周りからそんなに反論されると、なんか自分も自信がなくなってきた。 まあそれはともかくとして、 表示を10倍くらいに拡大すると、もはや直角二等辺三角形2つを並べたテクスチャの斜めの辺の挙動が無視できなくなるな。 大体10x10にならんでるけどところどころ9になったり11になったりする。 それに斜めにずれているところがあることに気づく。ちょうどポリゴンを斜めに並べたところだ。 なんだかどうにもならないことのような気がしてくる。 頂点を共有せずに微妙に1ピクセル分ずらしたりの調整が必要になってくるのかも。
648 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 00:21:13 ] とりあえず軽く実験してみたが、 転送先スクリーン座標を-0.5f, -0.5f しただけでは、拡大転送時に周りの1ドットの影響を受けてしまうな
649 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 00:33:43 ] >>648 そうだなぁ。例えば10倍拡大したときは0.1f、0.1fくらいでちょうどいいようだ。 微妙に9倍や11倍されてるピクセルがあるようだが、 こんなに拡大されたCGを凝視するようなことはないだろうから実用上は問題ないだろう。 2D表示における倍率に指定すべきUVオフセットが影響を受けるのかもしれない。 しかしGPUの機種の差異もありそうだしなぁ。
650 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 14:36:23 ] >>641 が言っているように、0.5ずらしは 本現象とは何の関係もない。 D3DTEXF_LINEARが、2x2エリアをサンプルするのが原因。 一応、UV座標を半テクセル分内側にずらすことで回避出来る。 float texture_width = 512; float texture_height = 512; float wh = 1.0/(texture_width*2); float hh = 1.0/(texture_height*2); float uv_quad = { u0 + wh, v0 + hh, u1 - wh, v1 - hh }; ただし、ずらす分マップするエリアが狭まるので注意。
651 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 15:24:25 ] 状況や描画させ方によるので 唯一これが最速だという答えは出せません。 ゲーム、あるいはエンジンに合わせて最適化がそれぞれ必要です。
652 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 15:28:10 ] それでも、Direct3D9で2D等倍表示をするときだけしか正しくない「頂点座標を0,5ずらす」を 後生大事に信じ込むのは馬鹿だろう
653 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 15:40:27 ] 基本的な質問で申し訳ないんだが、 GPUの機種によって描画できる場合と描画できない場合ができていて困っている。 原因は何が考えられるだろう? 動作条件は ・DirectX 9使用 ・Vertex/PixelShader使用 ・FVFはPosition|DiffUse|UV ・空間座標変換はCPU側で事前に合成してから単一の4x4行列としてID3DXEffectに入力。 現行のプログラムでRADEON HD4850だと正常にポリゴンが描画できるが、 Intel GMA950では描画されない。Device->Clear()は動いてる。 また、FVFがPositionRhw|DiffUse|UV のときは描画できることも確認している。(座標変換が利かなくなるが) シェーダー使ってなかったころのプログラムやシェーダーを使ってる サンプルプログラムでは描画できてるから、ハードウェアのせいではない。
654 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 15:45:16 ] きわめて一般的な描画方法だからどこかおかしいんと違う?
655 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 17:51:26 ] >>653 それだけの情報で分かるわけないだろう。 デバッグランタイムも何も文句言わないの?
656 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 19:32:40 ] >>655 デバッグランタイムは動かしたことないな。試してみる。 開発マシンじゃなくてテストマシンだったからDirectX SDKは入れてないので。 vs/ps3.0を指定してたら描画結果が真っ白になってしまったことはあったけど、 今回はそんなわかりやすい現象じゃないからなぁ。
657 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 23:00:15 ] developer.download.nvidia.com/SDK/10.5/direct3d/samples.html Stencil Routed K-BufferってDirectX9では出来ないんでしょうか? マルチサンプルへのアクセスが必要でDirectX9では出来ない、というようなことが書いてありますが マルチサンプル使わずに出来たりはしないんでしょうか。
658 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 00:21:35 ] ここで質問していいのか微妙な内容なのですが スレ違いでしたらスルーしてください。 DirectXを使用するとどうしても気になってくるんですが プログラムで使用されているVRAMの消費量を調べる方法はありませんか? メモリ使用量を調べるような関数があるのかと思ったのですが見つけられず… よろしくお願いします。
659 名前:デフォルトの名無しさん [2009/08/03(月) 02:01:17 ] DeviceCaps取得すれば VRAM容量わかるお
660 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 13:27:18 ] nai
661 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 13:27:58 ] このスレにいる人レベル高いなぁ 多分大学生が多いだろうから、大手狙いなんだろうなぁ……負けないように何か作るか
662 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 14:04:14 ] Zバッファがうまく動かないんですが 環境 WindowsXP VisualStudio2005 MFC Geforce9600GT 初期化 m_d3dPP.EnableAutoDepthStencil = TRUE; m_d3dPP.AutoDepthStencilFormat = D3DFMT_D16; LINE_VERTEX line[6] = { {-1 , 0, 0, 0xFF00FF00}, {1 , 0, 0, 0xFF00FF00}, {0 , 0 , 0 , 0xFFFF0000} , {0 , 1 , 0 , 0xFFFF0000}, {0 , 0 , -1 , 0xFF0000FF} , {0 , 0 , 1 , 0xFF0000FF} }; CreateVertexで書き込み
663 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 14:06:11 ] 視点の初期化(マウスで回転した時も) D3DXMatrixLookAtLH(&d3dm , &D3DXVECTOR3(0, 0, 6) , &D3DXVECTOR3(0, 0, 0) , &D3DXVECTOR3(0 , 1 , 0)); m_pDeviceD3D->SetTransform(D3DTS_VIEW , &d3dm); D3DXMatrixPerspectiveFovLH(&d3dm , D3DXToRadian(45.0) , (float)rect.right / (float)rect.bottom , 0 , 1000); m_pDeviceD3D->SetTransform(D3DTS_PROJECTION , &d3dm); D3DXMatrixRotationYawPitchRoll(&Rot, D3DXToRadian(m_AngleY), D3DXToRadian(m_AngleX), D3DXToRadian(0.0f)); m_pDeviceD3D->SetTransform(D3DTS_WORLDMATRIX(0) , &Rot); m_pDeviceD3D->SetRenderState(D3DRS_CULLMODE , D3DCULL_NONE); m_pDeviceD3D->SetRenderState(D3DRS_LIGHTING , FALSE); m_pDeviceD3D->SetRenderState(D3DRS_ZENABLE, TRUE); m_pDeviceD3D->SetRenderState(D3DRS_ZWRITEENABLE, TRUE);
664 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 14:09:05 ] 描画 m_pDeviceD3D->Clear(0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(20,0,50),1.0f, 0); m_pDeviceD3D->BeginScene(); m_pDeviceD3D->SetStreamSource( 0, g_pVB, 0, sizeof(LINE_VERTEX) ); m_pDeviceD3D->SetFVF( D3DFVF_XYZ|D3DFVF_DIFFUSE ); for(int i=0; i<3; i++) m_pDeviceD3D->DrawPrimitive( D3DPT_LINELIST, i*2, 1); XYZの軸を引いてマウスで回転させてるだけなんだけど 角度によって後ろの線が前に出てきたりZバッファが機能してないみたいなんだけど どこが間違ってるんでしょう?
665 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 15:40:38 ] D3DXMatrixPerspectiveFovLHの第4引数(znear)が0になってますがな
666 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 19:40:54 ] >665 ゼロからじゃだめなんですか?
667 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 20:22:40 ] だめ。 視錐台の前面が面積0になってしまう。
668 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 20:49:46 ] >>665 ありがとう、とりあえずそこを1.0にしてみたら出来たけど いまいち原理が良くわからないから調べますわ
669 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 23:17:36 ] 質問です。 川瀬式MGFを実装しようと思い、ここを参考にしながら journal.mycom.co.jp/column/graphics/050/index.html やってみたのですが、うまくいきません。 低解像度テクスチャに書き出し拡大しても こんな風に●の中心を中心に、拡大されたようにならないんですが 何かご存知のであればアドバイスをいただきたいです。
670 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 23:33:29 ] きみがやってみて失敗した結果の画像をどこかのアプロダに張れないか
671 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 23:35:04 ] ちょっと待っててください
672 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 01:58:54 ] そして>670は待ち続けた。 雨が降ろうと、風が吹こうと、雪が積もろうと、>671が帰ってくるのをずっと 待ち続けた。 スレの主人はそんな>670を不憫に思い、毎晩、スレを畳む時間になると、残り 物のレスをそっと脇に置いて帰ったが、翌朝までに手をつけられていたことは、 一度も無かった。>670は、ただひたすら一つのレスを見続けていた。 結局、>671が帰ってくることは、二度と無かったのだ。 なぜなら、>671は
673 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 08:48:32 ] (続き) なぜなら、>671は>672だったからなのだ。
674 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 10:00:36 ] UV値を入れずにポリゴンを書くとテクスチャを指定しても表示されないんだけど 大きさを可変にしたいからタイルパターンでテクスチャを貼り付けたい時はどうすればいいの?
675 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 10:03:27 ] そういうふうにUVを指定しろ
676 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 17:30:35 ] >674 テクスチャ画像を作る段階でタイルパターンの画像にしておけば良いのでは?
677 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 17:36:42 ] シェーダー使えば可能だろ
678 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 17:51:34 ] いろいろあるよ
679 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 18:17:51 ] 2Dを扱う場合、高速で描画できる方法を教えてください。 一応自分なりに調べて、描画をさせてみたのですが DXライブラリというライブラリを使った場合と比べるとかなり差が出てしまい 原因を探しています。 描画方法は、頂点バッファを使いDrawPrimitiveで画像を1つずつ描写しています。 よろしくお願いします。
680 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 18:26:04 ] 頂点バッファを使い1回のDrawPrimitiveで全部の画像を描画すると速いと思うよ 必要な絵全部を1枚のテクスチャに詰め込んでおくと良い
681 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 18:44:55 ] >>頂点バッファを使い1回のDrawPrimitiveで全部の画像を描画すると速いと思うよ このやりかたが分からず…方法の載っているサイトなどありましたらおねがいします。 DirectXによる2Dゲーム制作サイトなど見たのですが、1フレーム分描画するのに何度もDrawPrimitiveしているものばかりでした
682 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 19:00:41 ] 画像数×6個の頂点が入る大きさの頂点バッファを作って、 全部の頂点を書き込んで、DrawPrimitiveするだけ
683 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 19:15:58 ] 頂点バッファを一つにまとめて、テクスチャも一つにし それを一度にDrawPrimitiveすればいいってことですよね… つまりDrawPrimitiveの呼び出し回数が描画速度に関わってるって ことですか… 複数のテクスチャを扱っているので、できるだけ呼び出し回数を減らしてみます。
684 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 19:25:00 ] >>683 ↓まだ読んでないなら、読んでおくといい msdn.microsoft.com/ja-jp/library/bb147263 (VS.85).aspx
685 名前:684 mailto:sage [2009/08/04(火) 19:47:36 ] >>684 ありがとうございます。複数のテクスチャを扱うときは グループ化すれば、描写速度があがるんですね。非常に勉強になりました。
686 名前:683 mailto:sage [2009/08/04(火) 19:51:33 ] >>685 は名前ミスです。 早速、現状と比べてきます。
687 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 01:40:39 ] 表示中のモデルに直接色を塗りたいんだけど 爆発で黒く焦げたりとかしたい 決まった場所じゃないし、同じモデルがいっぱいあるから テクスチャをいじるわけにもいかないし どうすればいいんですか?
688 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 05:35:12 ] 頂点カラーを使うとか
689 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 07:36:02 ] マルチテクスチャで加工用のを重ねる。 洋ゲーでキャラを血まみれにするので使ってた実例もなんかあったはず
690 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 09:51:18 ] 質問です。 >>684 でもあがっているこの最適化ページに >できるだけ正方形テクスチャーを使用します。ディメンジョンが 256 × 256 のテクスチャーが最速です とあるのですが、 今までパーティクルに使うテクスチャは32x32くらいのなるべく小さいものにしていました。 もしかして256x256のほうが良いのでしょうか?
691 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 10:07:16 ] 色々な環境で実測してから言え
692 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 10:18:23 ] 32x32のテクスチャをたくさん使ってるなら256x256の1枚だけにまとめた方がいいかもしれないが、 32x32のテクスチャをひとつしか使ってないならそのままでよい
693 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 10:45:30 ] >>691 お前何しにこのスレ来てんの?
694 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 11:06:40 ] >>690 どうでもいいが、DirectXヘルプでよく出てくるこの「ディメンジョン」という訳が気持ち悪い。 dimensionの発音はディメンションだし、寸法という適切な日本語もあるのに。
695 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 11:56:10 ] >>694 昔、FORTRANの時代にSIONをTIONと間違わないためにあえてディメンジョンと言ってた名残かと
696 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 13:31:59 ] ディメンジョンが何を指しているのかもよくわからんしな。 >できるだけ正方形テクスチャーを使用します。ディメンジョンが 256 × 256 のテクスチャーが最速です 画像サイズが。という意味でいいんだろうかw X軸とY軸のことをディメンジョンと呼んでいるような気はするんだがw
697 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 13:36:26 ] >>696 >>694 がいってる、寸法っていうのがしっくり来るな。
698 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 13:48:54 ] 日本人にとってはdimensionというと数学用語の「次元」のほうが馴染みがあるけど、 英和辞典で最初に出てくるのは「寸法」だね。
699 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 13:49:46 ] 訳した人がよくわからなかっただけじゃねえの?
700 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 15:30:30 ] マイクロソフトの翻訳が糞なのは仕様 surfaceの正確な発音はサーフィスだけど サーフェイスと書いてあったり
701 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 15:33:21 ] それって翻訳なのか?
702 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 15:44:19 ] >>700 まあまあ。最近は歴史学でも用語発音の厳密化の流れはあるけど、 『サーフェイス』か『サーフェス』、『サーフィス』かというのは和製英語のレベルだよ。 (両方でググると引っかかる結果が違って興味深い) 英語的に考えると『サー』の部分も『フィ』の部分もむかつき音だから 「セーフェス」のほうがむしろ近いわけだが、読んでも意味がわからなくなる。 個人的にはサーフェスくらいかな。でもサーフェイスで覚えてしまってる。
703 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 16:11:46 ] "むかつき音"の検索結果 2 件 www.google.co.jp/search?q=%22%E3%82%80%E3%81%8B%E3%81%A4%E3%81%8D%E9%9F%B3%22
704 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 16:19:28 ] そもそもMSDNの翻訳って、機械翻訳じゃなかったっけ?
705 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 16:25:06 ] MSの機械翻訳はそこまで優秀じゃないよ 少なくともDirectX部分に関してはMSKKの川西さんが最終的な監修をしているはず
706 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 17:02:58 ] やってる奴が、有能か無能か、業務か無料奉仕かなんて関係無く 機械翻訳にしか見え無いとは酷い話だ
707 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 17:05:05 ] くだらねえ
708 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 20:52:40 ] 初心者のばかな言動を叱り付けると爽やかな気持ちでプログラミングに励むことができます
709 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 14:46:35 ] RPG風なダメージを表現しようとして敵が表示されているときのみ数字を表示って考えてるんだが if D3DXVec3Dot( &敵, &カメラ )>0 ってやるとカメラを回転させたときに数字が出ずに困ってる。 方向ベクトルの符号を変えればよいっぽいんだが変えるタイミングがわからない。
710 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 15:17:27 ] 数字の表示を独立するんじゃなくて 敵の表示処理のときに一緒に処理すればいいんじゃないの?
711 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 15:45:35 ] 質問させて下さい。 固定機能パイプラインのディフューズ、インデックスバッファを使用して 描画しているのですが、頂点に設定した色で面の色は補間されてしまいます。 頂点毎の色ではなくて面毎に色を設定したい場合は頂点シェーダを 使用するしかないのでしょうか?
712 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 16:02:59 ] >>711 D3DRS_SHADEMODEをD3DSHADE_FLATにすると、最初の頂点の色で 面が塗られる。
713 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 16:17:44 ] >>712 ぬおおお!!本当だ!!知らなかった!! 本にも載ってなかった、ありがとうございます!!
714 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 17:26:22 ] その本を捨てるか 俺のチンコをしゃぶるか 選べ
715 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 08:52:57 ] >>714 氏ね プリミティブ数より頂点数が少ない場合、 (インデックスバッファを使用して頂点を共有しまくってる場合) どうすればいいんですかね? こういう場合はFLATでのシェーディングは不可能という事ですか。
716 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 10:34:40 ] >>715 そんなにFLATにこだわるならポリゴンごとに頂点を分割したらいいんじゃないの? 何をそんなにこだわってるんだか。
717 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 10:51:09 ] >>716 こだわってるはモデラー的なものを作りいんですよ。 モデラーってスムージング角度を指定して、FLATかスムースになりますよね。 頂点数がどれくらい多くなるか分からないので、 効率考えてインデックスバッファは使いたいんですが、 今のやり方ではDirectXの仕様的に無理そうな感じですね。
718 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 10:52:02 ] 面ごとの色を決めて描画という方法は無い。 少なくとも頂点カラーは使えない。 やるならマテリアルわけするしかあるまい。 俺も昔OpenGLで同じことをやりたくて探したが、OpenGLにもDirect3Dにもなかった。 頂点カラーならぬ、面カラーがあるに違いないと思っていたが、幻想だったよ。
719 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 11:03:07 ] 質問です。 テクスチャに対して、マルチサンプリングを行っての描画をしたいのですが、可能でしょうか? 以下のことは調べました。 ・CreateTextureしたテクスチャからGetSurfaceLevelし、それをSetRenderTargetして描画 マルチサンプリングは効きませんが、描画がちゃんとできるのを確認しました。 ・CreateRenderTarget したサーフェイスをSetRenderTargetして描画 描画後、LockRectなどで描画が確かに行われているこを確認しました。 マルチサンプリングも効いています。 後者で描画した後、LockRectして手に入れた内容を、テクスチャーに転送する。 という手段でとりあえずは可能なのですが、いかにも周り道です。 ダイレクトにテクスチャにマルチサンプリング描画を行うにはどうしたらよいのでしょうか?
720 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 11:03:58 ] シェーダーを使えば可能
721 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 12:32:00 ] >>718 そうなんですかorz ありがとうございました。
722 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 17:33:45 ] >>718 >>720 当然じゃないか。 3Dの基本単位は頂点なのであって、 3つの頂点の配置からポリゴンの位置・大きさ・向きを判定するんだ。 面が先にあるわけじゃない。
723 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 17:47:35 ] 別に当然ではないだろう。 どうせ描画時には面単位で描画していくのだから。 DrawPrimitiveの引数だって、頂点数じゃなくて「プリミティブ数」じゃないか。
724 名前:デフォルトの名無しさん [2009/08/07(金) 23:47:44 ] DirectSoundってボリューム増幅させることできます? IDirectSoundBuffer8::SetVolumeは増幅はサポートしてないって書いてあるけど
725 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 00:44:07 ] アプリケーションのデフォルトを50%相当の音量にすればよい。
726 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 18:39:50 ] ウィンドウモードで画面サイズが変わったらバッファをリセットするんだけど テクスチャとバーテックスバッファを登録した状態でResetを呼び出すと失敗するんだけど 全部ReleaseしてResetして再登録しろってこと?
727 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 18:41:59 ] D3DPOOL_DEFAULTは全て
728 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 18:50:58 ] なるほど
729 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 19:40:06 ] いつもテクスチャはD3DPOOL_MANAGEDしか使わないんだが、 RenderTargetに指定できない以外は別に問題ないよな?
730 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 19:47:48 ] 問題ない
731 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:51:41 ] D3DPOOL_MANAGEDに変えたらテクスチャが真っ赤になったんだが どういうこと?
732 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:54:16 ] これまで初期化を怠ってきたから環境依存してる
733 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 21:52:12 ] LPDIRECT3DTEXTURE9 pTex; HRESULT hr; hr = D3DXCreateTexture(dev, img.GetWidth(), img.GetHeight(), 1, 0, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, &pTex); D3DLOCKED_RECT pLockedRect; hr = (*pTex).LockRect(0, &pLockedRect, NULL, D3DLOCK_DISCARD); unsigned char *dest = (unsigned char*)pLockedRect.pBits; unsigned char *src = img.GetData(); <- imgはRGBの24bit画像データが入ったクラス int j; int dest_pos=0; int src_pos=0; for(j=0;j<img.GetWidth() * img.GetHeight();j++){ dest[dest_pos] = src[src_pos+2]; dest[dest_pos+1] = src[src_pos+1]; dest[dest_pos+2] = src[src_pos]; dest[dest_pos+3] = 0xff; } dest_pos+=4; src_pos+=3; } hr = (*pTex).UnlockRect(0);
734 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 21:54:32 ] dest[dest_pos] = src[src_pos+2]; dest[dest_pos+1] = 0xff; dest[dest_pos+2] = 0xff; dest[dest_pos+3] = 0xff; こうすると真っ白 dest[dest_pos] = src[src_pos+2]; dest[dest_pos+1] = 0xff; dest[dest_pos+2] = src[src_pos]; dest[dest_pos+3] = 0xff; こうすると紫 dest[dest_pos] = src[src_pos+2]; dest[dest_pos+1] = src[src_pos+1]; dest[dest_pos+2] = 0xff; dest[dest_pos+3] = 0xff; こうすると水色 dest[dest_pos] = src[src_pos+2]; dest[dest_pos+1] = src[src_pos+1]; dest[dest_pos+2] = src[src_pos]; dest[dest_pos+3] = 0xff; これで青 どういうこと?まじで分からない
735 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 22:08:18 ] srcの中身なんだかわかんねーしよ それはそうと、D3DFMT_A8R8G8B8であればdestのオフセットは 0=B 1=G 2=R 3=A
736 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 22:20:35 ] というか、あれだけ優秀なD3DXライブラリを使わない理由がわからない。
737 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 22:33:14 ] せめてビットシフトのマクロ作れよw なんだその無様なコードは
738 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 22:35:24 ] 原因判明 UV座標が狂ってたw
739 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 22:37:15 ] >>736 モデルファイルのコンバーターを作ってるから専用のライブラリで統合してるんだ
740 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 22:39:31 ] >>737 別に無様とは思わないが?
741 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 14:11:40 ] ポリゴンが透けてしまう原因として何が考えられますか・・・? アバウトな質問ですいません。
742 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 14:16:01 ] アルファブレンドの値や設定が透過するようになってるとか?
743 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 14:33:09 ] >>742 アルファブレンドは使っていないんです。
744 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 14:53:23 ] >>741 われわれはエスパーではないのでそんなアバウトな説明では何もわかりません。
745 名前:741 mailto:sage [2009/08/09(日) 14:58:32 ] 透けてしまうというか奥にあるはずのポリゴンが 手前に表示されてしまうという現象です。 頂点座標は間違っていないので、何故かまったく分からないです。 同じ現象にあった方が居たらと思いまして質問しました。
746 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 15:08:36 ] Zバッファおかしんじゃね
747 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 16:22:23 ] >>745 Zバッファが有効になってないと、前後関係無く最前面に描画されてそうなる。
748 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 18:17:40 ] >>746 >>747 ご指摘の通りでした、zバッファ有効になってなかったです。 原因は視錐台の前面をゼロにしていました。 過去ログ見れば一発でしたね、お手数お掛けました。
749 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 23:27:48 ] ライトがXファイルによって反映されるのとされないのがあるのはなぜですか? アンビエントはかかるんですが・・・
750 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 23:29:03 ] マテリアル関係かな
751 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 09:45:58 ] 法線がないんじゃあるまいか? 確かデフォルトだとオートノーマライズもOFFだし、初心者ひっかかりやすいよね
752 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:09:07 ] それでした ずっとアンビエントでやってたから気が付かなかった・・・
753 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 15:34:01 ] オートノーマライズって何?
754 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 15:38:53 ] glEnable(GL_NORMALIZE) のことでは
755 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 15:39:35 ] ごめん、DirectXのスレだった・・・逝ってくる
756 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 17:08:21 ] >>753 頂点の構成要素には、位置座標ベクトルや法線ベクトルがあるが これらはレンダリングパイプライン通過時に、頂点変換行列によって変換される。 この頂点変換行列の内容によっては、法線ベクトルが単位長でなくなることもある。 パイプライン内のライティング処理は法線ベクトルを利用し計算を行うが、 そのとき法線ベクトルは単位長でないと正確な計算が出来ない。 よって、ライティング処理時、法線ベクトルを自動で正規化し単位長にするのがオートノーマライズ機能。
757 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 18:35:44 ] なんだ左手系とかで面の向きが分かるから勝手に法線を生成してくれるのかと思った 自分で作らないとだめなのかな?
758 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 18:50:39 ] 頂点は複数の面で共有するケースもあるので、 法線を動的に生成するのは、重い割に得られるものが少ない。
759 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 19:21:48 ] 出来ると思うのなら、鋭角と鈍角が入り交じった立体から、 何の情報もなく法線を自動生成するプログラムを作ってみろ。
760 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 19:29:03 ] 何の情報も無かったら法線以前に描画出来ないだろw
761 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 19:33:49 ] 立体なんだから頂点情報があるのが前提だと想像できないのは、 プログラム云々以前だな。
762 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 19:36:20 ] 法線の生成なんて何十年も前から論文が何十本と出ていて、未だにコレという決定的な方法がない領域だからな。
763 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 22:24:55 ] 右回りになる方向のベクトルでいいんじゃないの?
764 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 22:47:33 ] >>763 1つの頂点を共有する3つ以上のポリゴンの頂点における法線のことだろ?
765 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 22:53:10 ] >>763 鈍角をどうやって認識するつもりなんだ? 体験版でもいいから、まともなモデリングソフトを使って勉強し直せ。
766 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 22:55:58 ] 球体を外積で出した法線で描画すればいかに間抜けなのかが分かるよ。
767 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 00:19:26 ] 話が噛み合ってないのか? homepage1.nifty.com/t_kuji/3DCG_guide/normal_vector/normal_vector.html こういうことじゃないの?
768 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 02:46:04 ] 包丁一本〜さらしに巻いて〜
769 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 09:35:29 ] >>767 だからそれじゃ鈍角の法線が出ないんだよ。 かみ合っていない以前に、分かっていないのなら勉強し直せ。
770 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 09:39:28 ] なんで鈍角が出ないかといえば、そこが鋭角なのか鈍角なのかを頂点座標だけでは判断できないから。
771 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 10:12:57 ] 鈍角の法線って何ですか?
772 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 10:14:51 ] 内積とれば鈍角か鋭角は判断できる。 でも鈍角だったら、なんなんだ?
773 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 10:55:42 ] 凹多角形の事でも言ってるんだろうか?
774 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 11:14:06 ] 出ないっていう奴が問題だして 出るって言ってる奴が解けば結論でる
775 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 11:57:10 ] >>772 鈍角鋭角というのは角度の話じゃない。 法線を出すときに頂点座標だけでは、 周囲の頂点と平均をとるのかとらないのかが判断できないということだよ。 だから一般的な3Dフォーマットは、法線をデータとして含めるか、 頂点に対してスムージングをかけるか判断するための情報を入れるんだよ。
776 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 12:30:56 ] 1行目がわかりません 角度じゃない鈍角鋭角って何のことですか
777 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 12:51:49 ] 曲線のなす角と平面のなす角を言いたいんじゃないのか?
778 名前:デフォルトの名無しさん [2009/08/11(火) 13:07:02 ] すいません、質問したいのですが、 現在外部ファイルを読み込みたくて APIのGetOpenFileNameを使っているのですが この関数を使った後だと何故か D3DXCreateTextureFromFileEx や D3DXLoadMeshHierarchyFromX が 失敗してしまうみたいなのですが原因が分かりません…。
779 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 13:22:57 ] たぶんカレントディレクトリが変更されている
780 名前:デフォルトの名無しさん [2009/08/11(火) 13:27:29 ] >>779 カレントディレクトリで検索してみたら 確かにGetOpenFileNameが成功するとディレクトリが変わってしまうそうですね。 恐らくこれが原因だと思います、ありがとうございました!
781 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 13:28:02 ] 現行のやつをカレントディレクトリに依存しないようにするのがいいけど、 とりあえず OFN_NOCHANGEDIR で試してみそ
782 名前:デフォルトの名無しさん [2009/08/11(火) 13:40:30 ] >>781 ちゃんと動くようになりました! ありがとうございます、昨日ここで1日詰まってたんで助かりました^^; 普段からフルパスで書いてるほうがいいんですかね・・・? ほとんどの場合カレントディレクトリ前提でソース書いてましたが…
783 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 13:46:14 ] >>782 別にいい悪いはないが、相対アクセスをするときには常にカレントディレクトリがどこかを把握しておく必要がある。
784 名前:デフォルトの名無しさん [2009/08/11(火) 13:49:25 ] なるほど、たしかに相対する時はカレントディレクトリだとやりにくそうですね… ありがとうございます、すごく参考になりました。
785 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 14:04:09 ] >>784 老婆心ながら蛇足を描くと、 ゲームのようなデータファイルの多いソフトを開発する際は、相対アクセスの方が便利かもしれない。 VisualStudioのデバッグ時に作業ディレクトリを指定できるのでそこでカレントディレクトリを設定しておくと、 必要に応じて複数の動作環境を用意できる。 サンプルゲームが複数になってきたらそれで切り替えられる。
786 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 14:44:23 ] Xファイルを別フォルダに入れて読み込んでも問題ないのに テクスチャをXファイルと一緒に入れるとテクスチャだけ読み込まないのはなぜですか? 一応Xファイル内にはA.BMPのように書いて同じところにあるファイルを読むようにしているんですが・・・
787 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 15:04:19 ] X-File内の画像のパスを画像ファイルのあるパスに設定しろ。 X-Fileを読み込むときに勝手にカレントディレクトリを移動してくれる訳じゃないぞ。
788 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 15:09:49 ] やっぱりそれしかないですか・・・ わかりました
789 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 18:01:10 ] やっぱりパス関連の面倒を見てくれるローダは、さっさと自分で作るべきだよな
790 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 18:04:54 ] >>775 ようするにその角が丸みを帯びてるのか鋭いままなのかは計算では設定出来ないと言いたいのか?
791 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 18:11:54 ] その通り
792 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 19:19:55 ] どうでもいいが、頂点法線のスムージングの話で「鈍角」「鋭角」という用語を使うやつは初めて見た
793 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 19:52:30 ] 「どうでもいい」のにレスする意味が分からない
794 名前:641 mailto:sage [2009/08/11(火) 19:59:15 ] なんにしろ、読み返してみれば鈍角さんがなんのことを言っているのかを 解明するだけの流れだったな。
795 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 21:08:11 ] >>792 鈍角は90度を超える角で、鋭角は90度未満の角だよな、 小学校かどっかで習う範囲だと。
796 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 22:46:42 ] だから誰もそんなことは問題にしてないんだって
797 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 22:53:36 ] スムージングを使わずに単にポリゴン数を増やせばいいだけじゃん
798 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 22:55:37 ] 本当にそれでいいと思うのならそうすればいい。
799 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 00:42:40 ] 必要になったら実装すればいいだけで、大抵は平均化だけで十分。 というかデザイナとの相談だな。
800 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 00:54:41 ] D3DXLoadMeshHierarchyFromX( の LPD3DXFRAME* ppFrameHeirarchy, LPD3DXANIMATIONCONTROLLER* ppAnimController この部分をXファイルじゃなくて計算で組み立てたいんだが どっかに解説したサイトとかサンプルとかありませんかね? この単語で検索すれば出てくるとかヒントでも
801 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 00:56:39 ] 平均化だけで十分って、立方体とかが悲しいことになるぞ。 相談も何も普通に法線を含めればいいだけの話だろ。
802 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 00:59:11 ] >>800 自分でモデリングソフトのアニメーション部分を作るつもりなのか? というかそれ以前にプログラム云々以前で、 アニメーションを作る工程をやったことがあるのか?
803 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 01:02:34 ] >>802 モデリングソフトのようなものを作ってまして
804 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 01:10:48 ] またお前か
805 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 02:07:36 ] DirectXのプログラミングはすぐに次のバージョンに移れるものですか? 最近DIrectXを始めたばかり、というか 9 か 10 を勉強するかで悩んでいます。 現在使用しているPCがWindowsXPで10が扱えまないので9にしようと考えていたのですが、 今後新しいOSが普及して10以降が主流になったりすると置いてかれるような気がしまして。 そのPCも大分ガタが来たので10が対応しているPCに買い替えることも考えています。 今は10対応といえばvistaくらいでしょうが・・・
806 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 05:09:57 ] FromX使わない方が勉強になるね 頂点情報をバイナリ化したりとか色々出来るようになるし
807 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 05:15:28 ] >>805 10はシェーダ必須だから敷居が高め。 まず9をFVF使用で書けるようになってから、9のシェーダ、10のシェーダと行くのが比較的平坦な道のりだと思う。 多分言ってる意味分かんないと思うけど要するに9のチュートリアルから始めていいんじゃないかなということだ。
808 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 08:52:28 ] Easy Link Libraryの他にdirectx用のライブラリってありますか?
809 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 08:56:42 ] たくさんある。
810 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 09:07:07 ] 9でやった方が楽。 10は抽象化されていて、慣れてないと途方に暮れる。 10を改造して11にするのは難しくはなさそう。 製品を売るなら9。 趣味のライブラリなら、9&10共用。将来は10を捨てて9&11でもいい。
811 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 09:30:14 ] 将来を見据えるなら11オンリーだろw Windows7が出てしばらくすればさすがにXPはかなり数が減るし その頃にはDirectX9世代のビデオカードなんて淘汰されてるよ。 現状でさえ3世代前の代物なんだから。
812 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 09:40:05 ] 11は今日からプログラムに取り掛かれない
813 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 11:20:14 ] >>811 >Windows7が出てしばらくすればさすがにXPはかなり数が減るし そうかな?
814 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 11:24:58 ] 自分が必要だと思う環境でプログラムを組めばいい。 他人に対してどうこう言う問題じゃない。 この分野の人間は自分がやっていることを他人に押しつけたがる者が少なからずいるが、 それは誰のためにもならない。
815 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 11:32:41 ] DirectX9 ・情報が豊富 ・今からでもプログラム可能 ・ゲーム作って配布するとしても、流石にDirect9対応必須をうたっていいと思う DirectX10 ・情報そこそこ ・Vistaなら今からでもプログラム可能 ・ゲームなどを売るにはつらい(XPユーザーが多いから) DirectX11 ・情報少ない ・将来的に主流になりそう ・今からプログラムするのは困難 とりあえず9で勉強して、おいおい必要に応じてうつればいいかと
816 名前:805 mailto:sage [2009/08/12(水) 11:54:56 ] レスありがとうございます。今は9で勉強しておくことにします。
817 名前:デフォルトの名無しさん [2009/08/12(水) 11:59:13 ] おまいらってやたら詳しいけど、趣味なの?本職なの?
818 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 12:51:59 ] うるせえ黙れ
819 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 18:29:21 ] こんなマッチョじゃ感情移入できない アドルは永遠の優しい夢見る少年だろう どうみても童貞じゃないし
820 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 21:33:17 ] >>813 いずれにしろDirectX10やDirectX11対応のゲームが増えてくれば Vistaか7のどちらかにするしかないがVistaは選択肢にはいらないだろ。 どうせ2,3年もすればXPも売られなくなるし 新規でPC買えば全部Windows7化されてるだろ。 いつまでもDirectX9+XPにしがみ付いて技術的に取り残されるのも馬鹿らしい。 趣味でやる分にはDirectX9でぜんぜん問題ないと思うけどね。
821 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 21:56:00 ] 固定機能でお茶を濁したクズ本が消えるかと思うと 清々するわ
822 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 22:04:30 ] 逆に本がぜんぜんでなくなってるよな。 もうついていけてないんだろうか。
823 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 22:06:45 ] ていうかゲームなんて作るのやめろ ゲーPGなんてまったく金にならないし 本とか買ってまで作るなマジで
824 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 23:13:49 ] 金が目的なら株でもいじってろよw
825 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 11:28:23 ] 3Dゲームのエフェクトを強引にキャンセルさせてCPU負荷を下げる方法ってないですか?
826 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 11:35:32 ] >>825 えーと、それは自分が作ってるゲームに関する質問?
827 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 12:45:36 ] 某エロゲのモザイク的な修正がパーティクルで実装されているので
828 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 13:00:53 ] 実行ファイルを書きかえれ
829 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 16:10:27 ] 工エエェェ(´д`)ェェエエ工工
830 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 23:35:07 ] あそこが見たいだけじゃないのか?
831 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 23:40:13 ] >>828 長門さんがこちらを見ています
832 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 07:20:57 ] 脳内変換だ
833 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 11:11:36 ] アニメーションコントローラーを使ったアニメーションで 1ループ分のアニメーションの完了を検知したいのですが、 // if(アニメーション時間 >= 1ループかかる時間) if(AnimationSet(AnimationID)->GetPeriodicPosition( ? ) >= AnimationSet(AnimationID)->GetPeriod()) このような判定で合っているでしょうか? 合ってる場合、「?」の部分の引数にはなにを指定したらいいのでしょう? msdnの解説では「アニメーションセットのローカル時間」と書いていますが、 GetPeriodicPosition()の戻り値こそがローカル時間ではないのでしょうか?
834 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 11:34:13 ] なんかもう、誰も使ってない、仕様があやふやだし自分で作らない限り無間地獄から抜けられない という結論が数年前から変わってない。
835 名前:デフォルトの名無しさん [2009/08/14(金) 11:56:07 ] いやいやDirectX使わないとXBOXやWindowsでゲーム作れないって
836 名前:833 mailto:sage [2009/08/14(金) 12:32:32 ] 自己解決(´・ω・`) GetPeriodicPosition()はグローバルな時間をローカル時間に変換するメソッドのようで? 参照すべきだったのはトラックの方でした
837 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 21:41:02 ] シェーダーで描画してるんですが 固定機能のフォグって同時に使えるんですかね? やってみたらかからないので、 やはりピクセルシェーダーで自前でかけるんでしょうか?
838 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 21:53:15 ] ピクセルシェーダを自前で書くのなら、自前でかける
839 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 02:53:20 ] DirectXのプログラミングを始めようとおもうのですが これはSDKのチュートリアルにのってる最新のもの?から勉強していって良いのでしょうか? それとも以前のバージョンから順に勉強していくほうが良いのでしょうか?
840 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 02:55:23 ] >>839 通常はそんなめんどくさいことはする必要はない。 ただしバージョンごとにできることと動かせる環境に差異があるので、 DirectXのバージョンを比較した記事をいくつか読んで、 自分の作りたいものがバージョンいくつがふさわしいか最初に決めること。 後々でバージョンを変更するのはプログラムを作り直すようなことと等しい。
841 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 02:58:53 ] directxを更に使いやすくしたライブラリって通称名とかありますか? また鉄板の物はありますか?
842 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 03:05:53 ] >>841 山ほどある。 が、結局DirectX自体と直接格闘したほうが得るものが多い。 お勧めのライブラリはほかのヤツらよろしく。
843 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 03:07:37 ] >>842 なるほど、ありがとうございます ある程度作れるようになったら、改めて探してみることにします
844 名前:839 mailto:sage [2009/08/16(日) 03:10:57 ] >>840 なるほど、勉強になりました。 ありがとうございます
845 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 03:53:38 ] directx自体を理解してないとライブラリの使い方も理解出来ないからライブラリは無駄w
846 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 03:57:10 ] そうそう、面法線を計算して頂点を共有する面頂点の合計を正規化したものを頂点の法線に設定してみたけど 球体の見た目はかなり綺麗に仕上がる 角度で適用するかどうか判別すれば尖った部分も表現出来るんじゃないか
847 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 07:25:33 ] >>845 さすがにそれはない。 もしそうならEasyLinkLibraryはあんなに流行らなかった。
848 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 08:04:06 ] >>846 モデルデータ制作者の意図のをエスパーのごとく判断するプログラムを作らない限り無理。 だったら普通に法線をデータに含めればいいだけだろ。 いったい何がしたいんだ?
849 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 08:05:14 ] 大抵のライブラリは自由度を優先しててただのDirectXラッパーで終わってるから意味ないんだよ 例えば視点移動とかエフェクトとかがすべて内包されてて使用者はその中から選ぶだけとか そこまでやってあるライブラリなら意味があると思うけどないでしょ 仮に誰かが作ったとしても無料では出さないでしょ
850 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 08:06:43 ] >>849 それもうライブラリじゃなくてただのツクールだから。
851 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 08:07:12 ] >>848 とりあえずただの頂点データだけのメッシュをフォトリアルに表示する方法を模索してる
852 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 08:09:38 ] >>851 だからなんで頂点データだけにする必要があるのかを聞いているんだが。
853 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 08:11:10 ] >>849 Irrlichtとかがまさにそれじゃないか?
854 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 08:13:38 ] >>852 ただのモデルビューアだから、決まったものを表示するわけじゃないので 最終的にはゲームを作りたいけど、とりあえずビューア作って勉強しつつライブラリに包括していってる ツクールの心臓部分になるかもしれない
855 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 08:14:47 ] 法線がなかったらライティングしない、 あるならライティングする、が普通のモデルビューアーの挙動だと思うが
856 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 08:17:19 ] だから最終目標がツクールレベルだから、法線さえ知らなくても最新ゲーム並みの画像が出せるライブラリを作ってる 自分用にw
857 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 08:22:21 ] 法線なしで最新ゲームなみの画像とはこれはこれは大したもんだ。 デザイナーだったら3秒で投げ捨てろって言うライブラリだな。
858 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 08:23:54 ] 自動生成した感じでもかなりリアルだけどな
859 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 08:35:18 ] エッジの抽出をどうすんだって話じゃねえの
860 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 09:13:15 ] モデリングソフトで簡単に出力できるものを、わざわざ利用しない理由の答えになっていない。 カラーで出力できるのに、わざわざモノクロ写真からカラー写真にしろと言っているのが理解できているのか?
861 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 09:55:00 ] モノクロ写真をカラーにする技術は重宝されてるし、画像処理では主流の研究課題ですけど
862 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 10:00:14 ] 頂点法線の取り扱いについて、多少話しが振れてくれれば 得るものもあるが、デザイナとかモデリングソフトとか 得るものが何もない。 >>モデルデータ制作者の意図のをエスパーのごとく判断するプログラムを作らない限り無理。 別にモデルデータ制作者の意図を反映する必要はない。
863 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 10:35:16 ] >>861 元のツールがカラーで出力できるんだからそれでいいだろって話してんだろ。
864 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 10:36:12 ] >別にモデルデータ制作者の意図を反映する必要はない。 デザイナーに言ったら殴り飛ばされそうなセリフだな
865 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 10:49:53 ] 何小難しい討論してんだ 正確に描画したいなら法線をつけて出力する。 法線がない時は「とりあえずそれなりに描画する」ってやりたいだけだろ? 別にD3DXにだって、法線の自動生成機能はあるけど、別に批難するやつはいないだろ
866 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 11:17:19 ] そもそも法線を自動化することも出来るってだけで法線入れればそっちを優先するだけだがw
867 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 12:48:52 ] 質問です。 DrawTextを使って計算したFPSを表示したいのですが、LPSTR型に変換すると動かなくなります。LPSTR型にうまく変換する方法はありませんか?
868 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 12:58:51 ] >>867 逆だ。プログラム全体をLPWSTRで統一するんだ。(Unicodeビルドしてるなら) オレはそれが嫌になってC++でWindowsプログラム書くのをやめた。
869 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 13:01:04 ] なんでこのスレにいるの?
870 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 15:45:23 ] ヒトリデモ オオク ノ ワカモノ ヲ ユニコード ノ ジゴクカラ スクイタイ
871 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 15:47:40 ] 時代に取り残された老人は消えるべきだ
872 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 17:19:28 ] SJISがデフォルトのOS上でプロジェクト新規作成したらユニコードデフォルトとか嫌がらせ以外の何者でもない
873 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 17:36:36 ] 時代に取り残された老人は消えるべきだ
874 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 17:42:06 ] もはやSJISがデフォルトにはなっていないが、いったいいつの時代の話をしているんだ?
875 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 18:31:50 ] 今時のOSはユニコードが基本ってばっちゃが言ってたけど
876 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 19:42:12 ] 最近のOSがどうだろうが関係ねえ。 社内のツールがすべてSJIS前提だから選択肢ねーんだよ。 という会社けっこうあるんじゃない。
877 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 19:57:32 ] オープンソースのぜんぶSJISなのにどうすんの
878 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 20:00:01 ] ゲームのパラメータファイルとかは、基本SJISだからなぁ わざわざユニコで書く奴いるか?
879 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 20:07:20 ] ツールが吐き出すXMLもUTF8が使われている時代に何を言ってるんだろう?
880 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 20:18:40 ] XML厨のプログラマが自己満足で環境を整備しないとSJISでズルズルいくね。 そして、運用する側はタイプ総量とタイプミスが激増して精神病むの。
881 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 21:18:14 ] 普通XMLはUTF-8で書くだろアホか
882 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 21:19:58 ] UTF-8なら何も問題ないんだが、WindowsはUTF-16LEなわけよ。
883 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 21:28:43 ] 3D空間で人が平面上を動き回れる状態で色々試しています。 人が2m弱として、地面を1000m四方と巨大な板を置いているのですがバンプマップが上手くかかりません。 バンプマップで凹凸を表現するには細分化しないと効果が出ないものなのでしょうか。 テクスチャスクロールだけで地面の上を動いているように見せたかったのに 同じ絵(凹凸)の部分を色んな方向から見ても大して変化せず違和感があります。
884 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 21:36:59 ] >>868 unicodeは使ってないです。あと、LPCWSTRじゃ引き算とかが出来なくて困ります。他に解決方法はありませんか?
885 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 21:42:55 ] 色んな方向から見て変化させるのは、パララックスマッピングとかでは? バンプマッピングなら、光源の位置と向きを変化させると、見え方が変わると思います。
886 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 21:43:32 ] >>884 というか、MBCSとUTF-16は相互に変換するAPIがあるぞ? 引き算の意味するところは分からんが。
887 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 21:52:26 ] >>884 fpsをLPSTRに変換するというのは、もしかしてこういうことをやってるとか? int fps = ..... ; LPSTR lpstr = (LPSTR) fps; DrawText( .... );
888 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 22:13:19 ] 文字コードの変換すら出来ないのはDirectX以前の問題だろ。 基本からやり直せ。
889 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 22:13:48 ] >>887 大体そんな感じです。INTのポインタを入れたりしてみましたがダメでした。 漢字とかに変換するのが正解なんですかね?
890 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 22:18:00 ] >>889 まずはC言語の入門書から読もうな。 このスレに来るのは3ヶ月くらい早すぎた。
891 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 22:26:21 ] >>888 どうか可能か不可能かだけでもご教授を…
892 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 22:41:28 ] 叶
893 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 22:41:50 ] これは酷い
894 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 23:56:53 ] 木曽がわかってないのに応用問題を解こうとして話を難しくしてる
895 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 00:02:15 ] 初心者は死ね それがこのスレの掟だ
896 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 00:07:01 ] それはまた、エラいスレのタイトルと矛盾する掟だな。
897 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 00:09:14 ] sprintf発見!確かに論外だ。 DIRECTXは続けるので、また詰まった時はお願いします。
898 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 00:12:04 ] 流石にCの初心者までは扱いきれんだろw
899 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 00:15:49 ] CがダメならC#を使えばいいじゃない
900 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 04:04:17 ] メッシュコンテナ(D3DXMESHCONTAINER 構造体)から面ごとのマテリアル対応情報を取りだそうとしてるんだけど、 pMesh->GetAttributeTable()メソッドで取り出した、属性テーブル(D3DXATTRIBUTERANGE 構造体)の中の「AttribId」ってのは pMaterials[i]の添え字(i)に対応してるんでしょうか? 同じ属性テーブル内にある「FaceStart」というのも、インデックスバッファ内の面の構成データの格納順に対応してるのか疑問です・・・
901 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 05:41:26 ] プロジェクトの設定をマルチバイト文字を使用するに変更すればいいだけじゃない
902 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 05:44:49 ] >>900 出なかったからたぶんマテリアルとは関係ない メッシュをマトリックスグループみたいに分割することが出来てそのインデックス情報を格納するんじゃないかと でDraw???って関数でそのインデックスを指定するとその面だけが描画されるという
903 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 05:49:18 ] ああ、そうか マテリアルのインデックスを入れといてSetMaterialと連動させて その面だけを描画すればマテリアルのインデックスという意味にもなるのか まあ、ただ数字を入れて描画グループを分割出来るだけの代物だよ
904 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 06:36:53 ] うーん、pMaterials[i]の添え字(i)と頂点番号(もとい、面番号)を関連付けるデータは メッシュコンテナ内には無いのでしょうか? メッシュデータ内の全頂点から、あるマテリアルが適用されている頂点を特定したいのですが・・・
905 名前:904 mailto:sage [2009/08/17(月) 08:19:54 ] 多分、自己解決 ボーンコンビネーションテーブル(LPD3DXBONECOMBINATION型)に サブセット番号からメッシュデータ(最適化後)の頂点インデックスまで全て格納されてたので そちらを参照することにしました
906 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 12:04:53 ] ttp://marupeke296.com/DXGSmp_No26_WorldTransMatrix.html このサンプルプログラムを使って tiny.xを読み込んでも何もアニメーションしないのですが なぜでしょうか? ヒントだけでもいいので後生ですから教えてください・・><!
907 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 12:37:41 ] DirectXで直線を引くにはどうすれば?(´・ω・`) ポリゴンとかXファイルとかは表示できるのに・・・
908 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 12:50:40 ] DrawPrimitiveでいけるやないかアホでんねん(´・ω・`)
909 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 13:10:51 ] >>906 公式ならともかく、そこのページは管理人がちゃんと質問掲示板開いてるじゃないか そっちで質問しる・;(`ε()゙
910 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 13:41:09 ] なんなんだ・・・ 釣りなのか本気なのか・・・
911 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 18:35:49 ] 残念ながら、釣りではありません。
912 名前:883 mailto:sage [2009/08/17(月) 19:09:07 ] >>885 ありがとうございます。 基本的にはカメラを固定した状態でも動き回るものはバンプ、 それ以外はパララックスという使い方が良さそうですね。 もちろん場合に寄りますけど。
913 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 20:17:35 ] >>907 ttp://homepage2.nifty.com/natupaji/DxLib/dxfunc.html
914 名前:デフォルトの名無しさん [2009/08/17(月) 21:41:59 ] 現在DirectXを使ってゲームを作っているのですが、 ボタンが後ろに隠れてしまっています。 なので、ボタンがある位置にスプライトを使ってボタン用の画像を 表示しているのですが、時差が出来たりしてうまく機能しません。 どうすれば、ボタンそのものを前面に表示出るのでしょうか?
915 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 21:45:23 ] DirectXにボタンなど無い DirectXにスプライトなど無い
916 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 22:07:50 ] 「Direct3Dで作っているゲームのキャラと地形のことで質問ですが…」 「Direct3Dにキャラや地形などない」
917 名前:デフォルトの名無しさん [2009/08/17(月) 22:09:25 ] >>915 ボタンはウィンドウズの標準のもので、 スプライトはID3DXSpriteです。
918 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 22:21:26 ] ID3DXSpriteを使ってボタンの画像を描画しているのなら、 そもそも標準コントロールを使う必要性がない。
919 名前:デフォルトの名無しさん [2009/08/17(月) 22:51:14 ] >>918 それもそうですね。 DirectXのサンプルに使われているボタンは 標準コントロールを基にしてるのかと思ってましたが 今調べてみたら違いますね。 ご迷惑をおかけしました。
920 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 22:53:43 ] まぁ、ツールを作る際にDirectXで描画されたものとWindosのコントロール併用することがあるから 色々試しても無駄にはならないことだけどね。
921 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 01:52:08 ] Vistaか7ならどっちでも同じことだが
922 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 08:20:52 ] 同じじゃねえよ。 どれだけ馬鹿なんだ?
923 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 08:36:24 ] D3DXLoadMeshHierarchyFromX の必要な LPD3DXALLOCATEHIERARCHY pAlloc,がインターフェイスのポインタと なっているのですが COMインターフェイスってなんでしょうか? 調べてもプログラムの再利用としか出てこないので全くわかりません。
924 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 08:42:21 ] COMインターフェイスで検索しろ
925 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 09:54:49 ] Direct3D 11.0, Direct3D 10.1/10.0, DXGI 1.0/1.1, Direct2D 1.0, DirectWrite, Windows Imaging Component (WIC) APIs. (DirectWrite and WIC have partial support) あたりのサンプル実装がMSから出たぞ。 code.msdn.microsoft.com/WindowsAPICodePack
926 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 10:52:08 ] >>923 そのあたりは、とにかくまずはサンプルコピペして、動きを見て、内容を理解し、自分で改良するしかない。 マジ。 理解しないままゲームとか作ると、あと後絶対苦労するから
927 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 15:48:21 ] 1000に近づいてますが、質問させてください。 2D板ポリゴンの描画についてなのですが、DrawPrimitive系は重いので 1回で複数枚の板を表示するようにしてみました。 D3DXVECTOR4 vPos; D3DCOLOR color; D3DXVECTOR2 vTex; 上のようなメンバーを持った頂点オブジェクトの配列Vertexを作り、 for(int i = 0; i < Max; i++){ Vertex[i*4].vTex=D3DXVECTOR2(0.0f, 0.0f); Vertex[i*4+1].vTex=D3DXVECTOR2(1.0f, 0.0f); Vertex[i*4+2].vTex=D3DXVECTOR2(0.0, 1.0f); Vertex[i*4+3].vTex=D3DXVECTOR2(1.0f, 1.0f); } とu, vを初期化。そして、描画処理が入った数だけ Vertex[Cnt*4].vPos = D3DXVECTOR4(left, top, 0.0f, 1.0f); Vertex[Cnt*4+1].vPos = D3DXVECTOR4(right, top, 0.0f, 1.0f); Vertex[Cnt*4+2].vPos = D3DXVECTOR4(left, bottom, 0.0f, 1.0f); Vertex[Cnt*4+3].vPos = D3DXVECTOR4(right, bottom, 0.0f, 1.0f); ※color省略 Cnt++; とし、SetTextureして DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, Cnt*2, Vertex, sizeof(VERTEX); としたらテクスチャがあらぬ方向に伸びました。何故か正しく表示できてるものもあるのですが・・・。 どこか根本的に勘違いしてるのでしょうか?ご指摘いただけませんか・・・。
928 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 15:51:04 ] TRIANGLESTRIPがどういうものか調べてくるといい
929 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 15:56:02 ] >>928 さっそくのご指摘ありがとうございます。 全部プリミティブが繋がってると言うことでしょうか? 他の部分は問題ないものとしてTRIANGLELISTで実装してみます。
930 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 16:36:00 ] >>928 TRIANGLELISTでできました!1枚の板に6つ頂点使ってますが、 ちゃんとu,vと対応させたらOKでした。後は頂点インデックス使ったほうがいいですかね。 どれくらいパフォーンマンスに影響するかはわかりませんが。ともあれ即レス感謝です!
931 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 16:42:06 ] >>930 すぐに非効率性に気づいてTRIANGLELIST+IndexBufferに移行するだろうがな。
932 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 00:54:18 ] 解決したんじゃなくて先送りしただけという事に気づくんだw
933 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 06:23:18 ] D3DXMATRIX mat; D3DXVECTOR3 vec; パターン1: lpdevice->SetTransform( D3DTS_WORLD, &mat ); →vec(頂点)をDrawPrimitivで描画 パターン2: vec = vec * mat; →vec(頂点)をDrawPrimitivで描画(SetTransformしない) この2つは同じ結果になると思ってたんですが、どうやら違うらしいです。 SetTransformをせず、パターン1と同じ結果を得るためにはどうすればいいのでしょう?
934 名前:933 mailto:sage [2009/08/19(水) 07:24:03 ] 計算ミスってました(ノ∀`) サーセン orz
935 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 10:33:40 ] >>933 SetTransformしないってのは、座標変換しないって意味じゃないぞ。 初期値として単位行列が設定されているから、起動時から一度も設定してなければ 結果的に入力と出力が同じ座標になるが。 何もセットしなけいと別の場所でSetTransformした値が残っているので、 明示的に単位行列をセットすべき。
936 名前:デフォルトの名無しさん [2009/08/19(水) 14:55:22 ] ガラスのコップみたいな透明な物体を描画するには、 テクスチャーを透過するだけでいいんだな
937 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 15:10:03 ] >>966 DeffUseのαを設定する形にすれば透過率を後から変更できるけどな。 いずれにせよ描画順に制約を受けるので注意。
938 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 15:46:26 ] グラスの表現は透過率の調整だけじゃ出来ねえよ プログラム以前に最低限のモデリングを経験してからにしろ。
939 名前:デフォルトの名無しさん [2009/08/19(水) 17:22:15 ] >>937 deffuseのアルファ値か、ありがとう! >>938 屈折の話とかかな? ヒントサンクス!
940 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 20:09:42 ] マウスの左ボタンを押しているときにprintfDx関数で"Hello C World!\n"と出力し、 押してないときはclsDx関数で消すというコードを書いたつもりなのですがうまく消えてくれません。 どうしてでしょうか?初歩的な質問ですいませんが、よろしくおねがいします。 #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ ChangeWindowMode(TRUE);//ウィンドウモード if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化 char Key[256]; //ループ開始 while(ProcessMessage()==0 && ClearDrawScreen()==0 && !GetHitKeyStateAll( Key )){ //↑メッセージ処理 ↑画面をクリア //ココ↓ if( ( GetMouseInput() & MOUSE_INPUT_LEFT ) != 0 ) { // 押されている printfDx( "Hello C World!\n" ) ; } else // 押されていない { int clsDx( void ); } //ココ↑ ScreenFlip(); } DxLib_End(); return 0; }
941 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 20:18:12 ] >>940 ここはDirectXのスレです。
942 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 20:21:55 ] >>941 スレ違いでしたか、すいませんでした
943 名前:デフォルトの名無しさん [2009/08/20(木) 17:55:06 ] DirectX9とc++でゲームを作っているのだが、ゲーム会社に就職する には、どれくらいの技術が必要ですか? よく聞く基準 ライブラリを作れるとか 簡単な3Dゲームが必要とか 2Dだったら、完成度が高くないといけない だいたいでいいから基準みたいなものはありますか?
944 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 17:57:57 ] ゲーム1本作れればおkよ
945 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 19:03:07 ] 人事担当じゃないから詳しいことは分からないけど、DirectXでゲームとして完成度の高いものを作っても意味ないよ。 一番は表現力。HLSLでSDKのサンプル以上の何かを出来ればそれだけで十分だったりも。 小規模な企業ならそれでいいけど、中規模以上の企業であれば数学・物理が人に教えることが出来るレベルじゃないとダメ。 ハードが変わっても求めたい答えとその計算方法が分かっていれば問題ないしね。 ちなみにバンナムは数学・物理中心で、簡単なC言語ソースの問題(穴埋め)。 任天堂は数学・物理中心、あとは一般常識と発想力。 大企業になると技術力をアピールする機会がなかったり、それ以前に蹴落とされるから注意してね。 まぁ、場違いな書き込みなんですけど。
946 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 19:38:01 ] 板違いな奴は入れないお レスする方もたいがいだけどな
947 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 19:45:42 ] ゲームとして完成度の高いもの(笑)
948 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 21:04:59 ] そもそもここは進路相談のスレじゃない
949 名前:デフォルトの名無しさん [2009/08/21(金) 00:03:24 ] >>947 面白いゲーム作れなくて、数学物理が出来ても仕方ないと思うけどな。 単なる技術のデモンストレーションみたいなゲームは嫌だろ。 ゲームとしての捻りが無ければ売れんだろうし。 ま、だからって数学物理がいらないとは言わないが。
950 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 00:09:04 ] >>949 そういう人ばかりいたら駄目だろうが、当然面白いゲームを作るための人というのもまた別に雇用するだろう。
951 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 00:23:24 ] ゲームが面白いかどうかなんて、グラフィックや企画、仕様による所が大きいだろーが つーか、ここはプログラマ板だろ プログラマ(だぶん一人)が作った、転職、就職用ゲームが面白いかどうか、 なんて言ってるのは、ロートルの分って無いオッサンにしか見えん 挙動とかタイミングなんて言うなよ? それこそ、そのサンプルプログラムで言い訳だろ つまり、数学物理とは言わないが 技術スキルが分るサンプルやデモで十分 採用に面白い完成したゲームとか言ってる奴は、マジで組織のお荷物ぽっい いい年して技術が無く、技術的な問題可決もトンチレベルの発想で 結局、若い技術ある奴が残業や休日出勤でカバーとか、ねw
952 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 00:26:00 ] ゲームってこれからも どんどんどんどんどんどん 難しくなってくのかな? 昔はフォトンマップとか非線形計画問題とか考えなくても ゲーム作れたのに。 うざい、皆死ねばいいのに。
953 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 00:36:28 ] うんうん、板もわきまえずに語りだす奴は皆氏ねばいいね
954 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 02:14:38 ] ツールが増えてるからむしろ簡単になってるんじゃない?
955 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 03:28:34 ] Physixスレがないのだがここでいいのかな