1 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 09:55:56 ] ※回答する人も、質問する人も必ず読んでください これらに当てはまる人のための質問スレです。 1.C/C++は多少理解している。 2.最近DirectXを始めたばかり 3.SDKを見ても、Googleで検索しても、いまいち理解できない人 4.余計な雑談は不要ですよ 【 回答してくださる方 】 ・ できるだけ優しく質問に答えてあげてください。 ・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。 「ググれ」「SDK見れ」以外の回答でおながいします。 ・ 神ですら理解不能な質問は無視して下さい。 【 質問する方 】 ・ どんな事で躓いているのか明確にしよう。 ・ 長くならないなら躓いている部分のコードを晒してみれ。 ・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。 ・ 回答して貰ったら、出来るだけお礼もしよう。 【C++】 DirectX初心者質問スレ Part16 【C】 pc11.2ch.net/test/read.cgi/tech/1202634347/
326 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 11:26:10 ] >>318 Xファイルから布部分を取り出して、自前でクロスシミュしてリアルタイムに描画ってのはできます。 これだと ・リアルタイムゆえ、色々な変化に柔軟に対応可能 ・リアルタイムに計算するコストが必要 ですよね。 今回はキャラがきまったアニメーションしかしません。リアルタイムに計算しない方針です。 D3DXのXファイル再生サポートをD3DXAnimationControlerしか知らないのですが、 これが制御するのはボーンの動きだけですよね? 古典的クロスシミュの1つとして、布に大量にボーンを仕込んで…という方法がありますが、(D3DXを使った)Xファイル再生ではその方法しかないのかな?という疑問です。
327 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 11:35:51 ] >>325 極座標を使うということは、一旦座標をatanなどを使って角度に直した方がいいということでしょうか? AとBと0,0,0を含む平面を考え、その平面上でのAの角度(0度とすると計算しやすいか)と、Bの角度を求める。 という方法でしょうか? また、今勉強中なのですがクォータニオンというものを使えば、望んでいることが簡単にできるのかとも思っているのですがどうでしょうか?
328 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 11:48:14 ] >>327 角度で応用きかすなら角度に直した方が可読性が高いかと思って 思いついてたのはargとpolar ごめんクォータニオンはよくわからない
329 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 11:51:03 ] >>322 Platform SDKをインストールしていなければインストール。 ttp://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en インストールしている場合、binとincludeとlibの優先順を確認。 ttp://forums.microsoft.com/MSDN-JA/rss.aspx?siteid=7&postID=1320640&forumID=188
330 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 14:59:47 ] >>321 そうですか。 クリックしてみます。 ありがとうございました。
331 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 15:54:51 ] >>324 AAとBBは単位化してるから、CCは二等辺三角形の底辺と同じなんだけど… プロセスが必要で、結果が求まるだけじゃ駄目なのかね
332 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 16:04:46 ] >>331 >>319 だと角の2等分でしかうまくいかない
333 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 16:10:04 ] >>328 の訂正 そういや3次元だからargとpolarは使えないわw >>327 の通りです。 座標系変換の関数がなければ作ってみてもいいだろうし
334 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 16:38:58 ] >>329 レスありがとうございます ttp://forums.microsoft.com/MSDN-JA/rss.aspx?siteid=7&postID=1320640&forumID=188 このサイト通りにやったら>>322 のエラー文は消えましたが新たにこのエラー文が出てきました 解決策を教えてくださいお願いします LINK : fatal error LNK1104: ファイル 'd3d9.lib' を開くことができません。
335 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 17:16:41 ] >>334 libの設定の先頭に↓は記述してる? c:\program files\microsoft directx sdk (august 2007)\lib
336 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 17:19:26 ] >>326 その条件なら 事前計算して、その結果をXファイルにフィードバックで良いかと 今あるか分らないが、サンプルにイルカのモデルがアニメーションするのがあって (確か海底みたいな場所で…) それが1Xファイルで、頂点モーフしてるフォーマットだったと思う つまり、Xファイルは頂点モーフ出来るはずだよ フォーマット調べて、任意のキーフレーム時の頂点情報を書き込めば 補間は確かスプラインとかリニアで種類がないけど、頂点モーフ出来るんじゃないかな …メッシュの部分的なモーフをサポートしてるかは微妙 駄目なら駄目で、クロスシミュ適応部分だけ別ファイルにして、本体に自前で子供付けするとか
337 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 17:22:28 ] >>335 レスありがとうございます c:\program files\microsoft directx sdk (august 2007)\lib これは一番上にあります その下にPlatform SDKがあります インクルードのdirectxも一番上にあります その下にPlatform SDKがあります
338 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 17:36:54 ] >>332 理解した、サンクス >>327 ベクトル演算と3次元回転と内積でいけるような気がする 思いつきだけど ベクトルA(どちらか)を、加算でも減算でもいいからXY成分を0にするベクトルAAを求め AをZ成分のみにする( A(0,0,*)みたく ) そのベクトルAAをベクトルBにも適応( つまりベクトルAをZ軸とする座標へ変換 ) ( 以降、その座標系の話で ) ベクトルBとXZ平面がなす角度を求め( ベクトルBからY成分をカットして作ったベクトルBBと内積で求める ) その角度でベクトルBをZ軸回転させ、ベクトルAとBをXZ平面にもっていく ここで、XZ平面上でのベクトルAとBのなす角を求め、その角度を使って任意の比率角度を決めて その角度で、ベクトルBを今度はY軸回転させたベクトルCを作る 最後にベクトルCを、ベクトルBBを作った逆の回転、座標変換した逆の計算をしてもどに戻せば… スマートじゃないけど、こんな感じは?
339 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 17:44:40 ] ムービーをWindowsXP/Vistaを対象に再生したいのですが 安定して使える関数が分からずに困っています。 現在ではどういった関数が使われているのでしょうか?
340 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 17:45:55 ] >>338 スマートじゃなさすぎないか?w それなら327の方法のままでいい気がするが 俺もやったことはないからツッコミだけですまんが、3Dシューティングのミサイルとかって毎フレーム相手の座標に向けて1度ずつ向きを変えるとか普通にやってそうだよな・・・ 意外と方法確立されてないのか?
341 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 17:50:53 ] >>340 自分でもスマートじゃないと思うが… しかし、実際に327を行なう手順を記述しただけだと思うんだが (オイラー法のみでクォータニオンを使わないで)
342 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 18:09:32 ] >>336 それっておそらく ttp://www.microsoft.com/japan/msdn/directx/welcome/dsmsdn/directx04162001.aspx ですよね。確かに最初見たときかなり衝撃的でした。 でもこれは3つのXファイルのメッシュデータを、自前でモーフしてるっぽいです。 あと、DirectX9のサンプルの中にイルカのXファイルはあるのに、使用しているサンプルが見つからないのはなぜでしょうね・・・
343 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 18:41:43 ] >>337 最後の「\x86」が足りなかったか。 c:\program files\microsoft directx sdk (august 2007)\lib\x86 このフォルダと、フォルダの中にd3d9.lib等一式が存在することを確認。
344 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 18:57:07 ] >>343 レスありがとうございます c:\program files\microsoft directx sdk (august 2007)\lib\x86 この設定にしたら>>334 のエラー文はなくなりましたがまた>>322 のエラー文が出てきました 解決策を教えてくださいお願いします
345 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 19:09:29 ] >>344 #include <windows.h>呼んでないとか・・・w
346 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 19:16:56 ] >>345 レスありがとうございます もう少し詳しくお願いします それだけだとちょっと分かりません すみません
347 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 21:04:11 ] >>346 その部分はもはやDirectXとは関係無いエラーだ おそらく環境のインストールに失敗している あとは汎用の初心者質問スレへ行った方がいい これ以上だとスレ違いということで叩かれるよ
348 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 22:15:53 ] すみません、DirectX上で動くゲームを作成してるんですが、 あるモーションのキーフレーム数を調べたいんです。 (無駄にキーフレームの多すぎるモーションはリダクションをしたいんです) LPD3DXANIMATIONSETのGetNumAnimationsがそれ用の関数だと思ったんですが どうもボーン配列の数を返しているみたいで・・・。 どうすればキーフレーム数を調べる事が出来るんでしょうか?
349 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 22:40:12 ] すみません、Visual C++ 6.0でDirectXのXファイル読み込みをプログラムしたのですが 上手くいきません。ビルドには成功したのですが、実行してもすぐに終了してしまいます。 SDKはDirectX 9.0 Update summer 2003を使っています。 デバッグ内容も下記に記載します。分かる人、教えて下さい、宜しくお願いします。
350 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 22:42:52 ] 'ntdll.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\kernel32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\user32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\gdi32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\d3d9.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\d3d8thk.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\msvcrt.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\advapi32.dll' をロードしました、合致するシンボル情報は見つかりませんでした
351 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 22:44:37 ] 'C:\WINDOWS\system32\rpcrt4.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\secur32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\version.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\winmm.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\dinput8.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\imm32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\lpk.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\usp10.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\uxtheme.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\Program Files\Trend Micro\Virus Buster 2007\TMAS_OE\TMAS_OEHook.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\MSCTF.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\Downloaded Program Files\CnsMin.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\shlwapi.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\imagehlp.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
352 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 22:45:10 ] 単純にループ書いてなくて一回素通りして終了するプログラムになってるとかじゃないよね?
353 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 22:45:13 ] 'C:\Program Files\Trend Micro\Virus Buster 2007\TMAS_OE\TMAS_OEHook.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\MSCTFIME.IME' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\ole32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\ATOK17W.IME' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\shell32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\ATOK17DE.DLL' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\ATOK17AE.DLL' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2982_x-ww_ac3f9c03\comctl32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\comctl32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\Program Files\Trend Micro\Virus Buster 2007\TMAS_OE\TMAS_OEHook.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\Program Files\Trend Micro\Virus Buster 2007\TMAS_OE\TMAS_OEHook.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\Program Files\Trend Micro\Virus Buster 2007\TMAS_OE\TMAS_OEHook.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\Program Files\Trend Micro\Virus Buster 2007\TMAS_OE\TMAS_OEHook.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\Program Files\Trend Micro\Virus Buster 2007\TMAS_OE\TMAS_OEHook.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\hid.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\setupapi.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\wintrust.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
354 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 22:45:54 ] 'C:\WINDOWS\system32\crypt32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\msasn1.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\ntmarta.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\wldap32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\samlib.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 'C:\WINDOWS\system32\d3dxof.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 スレッド 0xF2C 終了、終了コード 0 (0x0)。 プログラム 'H:\CLUB SEE\3Dチェス\my3dlib\Debug\my3dlib.exe' はコード 0 (0x0) で終了しました。
355 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 22:46:03 ] ググレカス
356 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 22:49:20 ] もはや荒らし VisualStudio使ってるなら、ブレークポイントで止めて一行ずつ実行してけカス
357 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 23:13:01 ] mviewでXファイルを開いた時、アニメーションのリストがメニューの Animation > Animations の下に最大50個現れると思うのですが、 Xファイルを開いただけだと何故か現れません。 Add Animationで追加オープンすると、最初に開いたXファイルのアニメーションと、追加で開いたXファイルのアニメーションが両方現れるのですが… AddAnimationせずに、最初に開いたXファイルのアニメーションを表示する方法はありませんか?
358 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 23:25:14 ] >>347 レスありがとうございます インストール時にエラー文はでなかったんですけどねぇ・・・
359 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 23:28:45 ] パスも通せない馬鹿は死んでいいよ
360 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 00:37:22 ] >352 ループには問題なさそうですね。 >356の言う通りにしたら解決したわ、もっともブレークポイントなど使わずに 一行ずつ実行していったがな。ヒントありがとよカス。
361 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 02:13:27 ] >>359 お前が死ねキモデブ
362 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 03:13:11 ] みなさーん 池沼には優しくしてあげましょう 社会のゴミですが同じ人間です
363 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 04:22:37 ] ttp://www.imgup.org/iup605620.jpg.html コンパイル中↑こういうのが出た後に下みたいに「シンボルが読み込まれていません。」が大量に出るんですけどどうしたら出なくなりますか? 'MuscatBoy.exe': 'C:\WINDOWS\system32\ntdll.dll' を読み込みました。シンボルが読み込まれていません。 'MuscatBoy.exe': 'C:\WINDOWS\system32\kernel32.dll' を読み込みました。シンボルが読み込まれていません。 'MuscatBoy.exe': 'C:\WINDOWS\system32\user32.dll' を読み込みました。シンボルが読み込まれていません。 'MuscatBoy.exe': 'C:\WINDOWS\system32\gdi32.dll' を読み込みました。シンボルが読み込まれていません。
364 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 05:07:45 ] 363は自己解決しました
365 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 06:06:15 ] >>364 どうやったら解決したの? 原因は? もう一回>>1 を読んでね。
366 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 14:52:25 ] >>365 自己解決の場合は誰に礼を言うの?w
367 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 14:54:12 ] >>360 ヒントもらえたんだから感謝せぇよアホ 合致するシンボル情報は見つかりませんでしたってのは、 「デバッグ用にDLLを読み込んだが、特に必要な情報は無かった」 とかの意味だ。(厳密には違うかもしれんが) それはデバッグ実行すると当たり前に出る内容であって、 そんな大量の、何の問題もない(かつDirectX無関係)の内容を貼り付けたら 荒らしとか言われても仕方無い。
368 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 15:49:17 ] 質問です Xファイルを使ったモデルにマルチテクスチャを行ないたいのです 例えば地面に見た目用のテクスチャーと、バンプ用のテクスチャーを適用したいと思っています。 ただ、Xファイル系のサンプルを見る限りテクスチャーを2つ使うことは想定外のように見えました。 カスタムテンプレートという仕組み上、自前でそういうXファイルは作れそうですが、3DモデラーがそういうXファイルを吐いてくればれば(あまり)意味がありません。 マルチテクスチャなXファイルというのは一般的ではないのでしょうか? LWを使ってXファイルを吐いているのですが、もし良い方法があれば教えていただけると幸いです
369 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 16:24:58 ] ピクセルシェーダーで合成すればいいんじゃじゃね?
370 名前:デフォルトの名無しさん [2008/05/07(水) 19:17:02 ] 今頃DirectX10のサンプルみたら、三角形ポリ描画するだけでシェーダー必要とかXファイルがサポートされてないとかアホか。 DirectX使うのは思いついたゲームをちゃちゃっと作りたいからなのに、生産性下げてどうする・・・
371 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 20:28:33 ] 質問です 頂点ブレンディングはDirectXの機能で実装するのと 頂点シェーダで実装するのとでは、どちらが一般的ですか?
372 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 21:52:57 ] >>371 調査統計をとるようなマーケティング能力や、 規格を立ち上げる権限をもった人間がいるわけでもないのに、 そんな不確定な情報を誰とも知らない人間に聞くその意図を明確にせよ。 ロボットのように命令が無ければパンツもはけないというのなら、 一般的かどうかを聞くより、最初からあらゆる事を指示してと言えばいい。
373 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 22:50:41 ] >>372 答えてやれよ。あんたは業界人なのけ?
374 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 23:05:41 ] まずは一般的という基準を明確にすることから始めないといかんだろ。
375 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 23:08:23 ] 聞き方が不味かったのかな? ここの人たちはどっちでやってますか?と言う聞き方ならまだ良かったとか?
376 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 23:10:29 ] 人それぞれ
377 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 23:11:53 ] ターゲットマシンによるべ あくまで古いマシンでも動かしたいなら頂点シェーダ使うのはきびしいんじゃね?
378 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 23:12:24 ] おまえら意地悪ですね 俺はこうしてるってだけでもいいんじゃないの
379 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 23:18:02 ] そもそもシェーダを利用するのはDirectXの機能とは言えないのか? シェーダを利用するしないに限らず、ハードが対応していなければ、 DirectX側がエミュレーションするし、していなければハードが処理するだけで、 データを渡すのはDirectXが処理していると言える。
380 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 23:20:17 ] 行間から固定機能パイプラインorシェーダと読めたんだが違うのかな?
381 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 23:20:18 ] つまりDirectXではなくOpenGLからシェーダを利用するかどうかという話なのだろう。
382 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 23:34:58 ] どちらが一般的かと言われれば固定機能パイプラインだろう なぜならそれしかなかったから だが、いずれ消え行く技術をいまさらやってもだし シェーダーでやっといたほうが後々まで使えるんでね?
383 名前:291 mailto:sage [2008/05/08(木) 00:04:46 ] 仕方が無いのでDXUTの解析から始めようと思います。 (解析して光明が見えてくればいいのですが・・・)
384 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 00:51:33 ] 馬鹿はシェーダーを使えない。それだけ。
385 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 01:43:58 ] 頂点ブレンドってスキンメッシュとかのことよね? だとしたら、一般的とかいうより色んな制約で変わってくるんじゃね? ・自前形式ではなくXファイルを使うなら、D3DXのスキンメッシュサンプルと 同じ方法が使える ・でもそのやり方だと行列パレット使うので関節のSLERPが出来ない(LERPになる) そこらへんにこだわると、必然的に自前コードで広げることになる ・でも固定機能パイプラインの行列パレットは、最近のビデオカードではほとんど ハードウェアサポートされてない(ソフトウェア頂点処理に頼ることになる?) ・頂点シェーダで計算する場合、シェーダ3.0までは定数レジスタが256しかないので 1ボーンあたり3レジスタ(SLERPなら2で足りるが)だとすると80ボーンしか使えない 俺がやった限りこういう事情が絡んで来たから、色々調べつつ 自分のやりたいことと照らし合わせてたら必然的にやり方は決まるよ。
386 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 09:04:59 ] DirectX9使ってるんですけど ID3DXEffect::SetTexture とか ID3DXEffect::SetFloat って コスト高いんですかね? ループの内側で使っちゃダメかな?
387 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 10:13:12 ] >>371 頂点シェーダでやるのが良いと思うよ まず、ソフトウェアエミュで頂点シェーダを行なってもそれほど重くないのが1つ。 ブレンド可能数が頂点シェーダのほうが融通利くのが1つ。 他の頂点シェーダエフェクトと一緒に利用できるのが1つ。 固定パイプラインでハードウェア処理の頂点ブレンドやるとバグるグラボが少なからずある (ドライバアップデートすればなおるんだけど、ユーザーは必ずしも…ね) だから私は頂点シェーダ+ソフトウェアエミュ派
388 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 10:22:30 ] >>385 横槍で質問 ・頂点シェーダで計算する場合、シェーダ3.0までは定数レジスタが256しかないので 1ボーンあたり3レジスタ(SLERPなら2で足りるが)だとすると80ボーンしか使えない これって、1頂点へ影響するボーンが最大80って意味? それともモデル全体を通して80ボーンが限界って意味?
389 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 12:41:17 ] 必要に応じて分離すりゃいいだけ
390 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 13:11:36 ] DrawPrimitive1回に対して80ボーンが限界って事。 D3DXMesh関係だと其処を考慮してDrawPrimitiveを何回かに分けて256本までのボーンに対応できるようになってるだろ。
391 名前:385 mailto:sage [2008/05/08(木) 17:00:17 ] うん、説明不足だったけど1回の描画では、ってこと。 >>390 みたいにすれば確かに制限は無くなる。 自分はやってないからわからんけど、 事前に頂点のリンクと面の接続を考慮してメッシュを分割しておけばいいかと。
392 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 17:18:49 ] ミス、>>389 みたいにすれば。 D3DXMeshが自動で何かやってくれるのは知らない
393 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 17:25:41 ] うわ、最近D3D始めたばっかりなんだけど、スキンメッシュってそんなに定数レジスタ使ってるなんて気づいてなかったw D3Dのサンプル様様だなぁ… ちゃんと26ボーン毎に分割して、正常に表示できるように調整されてるっぽ (サンプルのSkinnedMesh)
394 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 19:56:39 ] アプリが終了すると Direct3D9: (ERROR) : [0] : Address 04F1E4CB Direct3D9: (ERROR) : [1] : Address 04F1E59B Direct3D9: (ERROR) : [2] : Address 04F1E440 Direct3D9: (ERROR) : [3] : Address 0501CCA5 Direct3D9: (ERROR) : [4] : Address 05023345 Direct3D9: (ERROR) : [5] : Address 05002898 Direct3D9: (ERROR) : [6] : Address 05016E13 Direct3D9: (ERROR) : [7] : Address 00486437 Direct3D9: (ERROR) : [8] : Address 00474CBE Direct3D9: (ERROR) : [9] : Address 004770CA Direct3D9: (ERROR) : [10] : Address 7C23ABCC Direct3D9: (ERROR) : [11] : Address 7C23B209 Direct3D9: (ERROR) : [12] : Address 7C235CC1 Direct3D9: (ERROR) : [13] : Address 7C22FF89 Direct3D9: (ERROR) : [14] : Address 7C22F067 Direct3D9: (ERROR) : [15] : Address 7C22EFDE が複数行 みたいなデバッグログ(OutputDebugStringで書けるやつ)でるんだけど 何が悪いんですか? あと、m_pd3dDevice->GetRenderTargetで取得したやつは、 Releaseすべきですか?
395 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 20:00:30 ] ワンスキンしか作れないとかいうウンコモデリングソフトに当たったら最後w なんでもかんでもすべての頂点に影響与えるとかギャグですか?w>某会社の自作モデリングツール 捨 て ち ま え よ ! (中小害虫社員(28歳♂))
396 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 20:01:03 ] 同い年ですね。 わかります。
397 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 20:14:45 ] >>395 マ板でぶちまけろ
398 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 20:16:24 ] 371です ありがとうございます とりあえず頂点シェーダでやってみます
399 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 21:18:32 ] >>395 DrawPrimitiveが減らせるので逆に高速化することが可能な場合も多々。 たとえばロボットみたいなものをパーツ毎にDPするよりは、ウェイト仕込んで ボーンでドーンと1回のDPで描く方が実は速い。
400 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 00:29:29 ] >>395 せめてそのウンコモデリングソフトが何か書いてくれないと
401 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 04:47:40 ] >>399 言い訳にしか聞こえないw
402 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 06:45:56 ] どう考えてもボーンとかよくわかってない人がとりあえず 頑張ってみました的臭いするやんか?
403 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 10:28:23 ] >>401 昨今のグラフィックカードでは常識
404 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 14:53:11 ] スキニングの計算をCPUでやることになるから グラフィックカードあんまり関係なくね?
405 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 15:13:41 ] ボーンを使おうが使うまいが階層のマトリックス演算は結局行なう。 そのマトリックスをWorldとして頂点シェーダーで計算するか、 スキン用のマトリックスとして頂点シェーダーで計算するかの違いだろ。 ボーンの場合Offset用の演算が加わるが、 DrawPrimtiveのコールはマトリックスの乗算とは比較にならないくらい重い。 スキンの処理までCPUでやるっつーなら話は別だけどDirectX7でやってるわけじゃないっしょ。
406 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 15:29:43 ] スキンの処理までCPUでやるようにしないと、この輪郭線抽出はできませんよね? ttp://www.twin-tail.jp/contents/vsdx8/d3d/011/index.htm
407 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 16:08:51 ] >>406 DirectX7世代でやるならそうなる。 それ以上ならもっとよい方法が存在する。
408 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 20:43:33 ] >>407 よかったら輪郭線抽出について情報いただけませんか Zバッファの差を見る方法や、マテリアル境界を見る方法、モデルをちょっと太らせて裏返して黒描画する方法など色々調べましたが 406のURL先ほどまで「正確」で「自在な太さ」にできる術が見つかりませんでした
409 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 21:35:32 ] トゥーンレンダリング
410 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 02:49:05 ] >>406 のは 希望をこめて絵を修正してるって書いてあるやん
411 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 03:21:23 ] >>408 そこまで知りたいなら金だせよ
412 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 10:46:29 ] >>408 自分で答え書いてるじゃん。 深度バッファやマテリアルの境界を輪郭検出のアルゴリズムで線を引けばいい。 その場合1ドットのラインしか引けないわけだが、 1ドットのラインを別のバッファに書いてそのバッファを上下左右にずらして もう1度書くと太くなるというのはわかるかい?
413 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 21:09:08 ] >>412 もちろんその手の「太くする」方法はわかりますが、 深度バッファ法はちょっとひいったアゴのような、深度差が浅い部分に輪郭線が出ません マテリアル法でも同様です。 モデルをちょっと太らせて裏返す法や、406のURL先のものほど「正確な」ものはなかなかありません。
414 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 21:42:40 ] 内積が正か負で判断して線引く>>406 のをシェーダでかけば同等の正確さじゃないの?
415 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 21:57:07 ] ○輪郭線アルゴリズム 確かに>>406 のものが 最も正確でキレイに作れそうなので、 >>406 を主にすべきだな。 ○ジオメトリ操作は、なるべくGPUでやりたい。 1パス目:D3DFILL_SOLIDで描画 2パス目:D3DFILL_WIREFRAMEで描画 この2パス目を、先のアルゴリズムで 輪郭線のみ描かれるようにすればいいんじゃないの。 ○線の太さは任意に変更したい。 これは、2パス目を>>412 の方法で太くすればいいんじゃないの。
416 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 22:00:03 ] >2パス目:D3DFILL_WIREFRAMEで描画 > >この2パス目を、先のアルゴリズムで >輪郭線のみ描かれるようにすればいいんじゃないの。 書いてから気付いたけど、これはちょっと難しいかなぁ
417 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 22:03:56 ] >>414 頂点シェーダで線を引くことはできないと思いますけど… >>415 その方法ですと、やはりアゴなどに輪郭線を出すことができませんよね。
418 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 22:05:38 ] >>406 のものと同等の正確さというのはかなり難しいなぁ… GPUを使ったものは、やはり速さ優先で作られてるし
419 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 22:07:33 ] うるせえ!!!
420 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 23:26:00 ] 「自在な太さ」というのが>>406 だと結構難しいはずなので(あと処理がキツイだろこれ) 結局のところ割り増しモデルを裏返し手法に落ちついちゃうんだよなぁ。 精度は落ちるけど、押し出す頂点位置を距離によらず一定になるように頂点シェーダで 調整すればそれなりの見栄えにはなる。
421 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 23:31:03 ] >>420 I3DXLine使えば太さは楽勝じゃね? 頂点データをもとに自前で線引いてるんだから
422 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 23:46:00 ] >>421 使ったことないので知らんが、あれでは太くなったら普通に線の一部が元モデルにめり込むか、 Z値を考慮せずに描画されるならなおさらこの手法には使えないのでは? 一ドットの線ならZバイアス使わんでも自前で射影行列なり弄れば>>406 の「理想」の線は描画できるが、 それ以上の太さになるとポリラインで表現することになり、そうなればどこまで線のZ値を前に押し出せば 元のモデルと重ならずに描画できるかは簡単には見積もれないはずだ。
423 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 09:25:17 ] >>422 ああ、ごめん。モデル側にめり込むのはご法度って考えだったのね。 俺は太さ3までだったら、モデルに1ドットめり込むだけだから別にいいやって思ってたもんで >一ドットの線ならZバイアス使わんでも自前で射影行列なり弄れば>>406 の「理想」の線は描画できるが、 よかったらこのあたり、詳しく解説してくれないか
424 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 17:38:11 ] 法線方向にプッシュして裏返すのって、特許取ってなかったっけ?
425 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 21:26:54 ] ちょっとD3DFILL_WIREFRAMEが話題にあがったから試してみたんだが D3DFILL_WIREFRAMEにしてもD3DFILL_SOLIDと描画時間が一緒だったんだが… 何かの間違いだろうか? PixelShaderの呼び出し回数が段違いだと思うのに…
426 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 21:46:10 ] なら頂点シェーダーかCPUがボトルネックなんだろ。 たいした量描画してるわけじゃないなら大抵CPUがネック。
427 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 21:51:10 ] 質問です 今、PixelShaderを使う描画を学んでおり、自分のメインPCでは正しく動作しました。 試しにと、PixelShaderに対応していない(1.0にすら対応していない)古いサブマシンに持っていって動かしたところ、正しく動いてしまいました。 ここで疑問なのですが、何故正しく動いてしまったのでしょうか? どうやら PixelShader = compile ps_1_1 PS(); と書いた部分が、メインPCだと正しく適用されるが、サブPCだと無視され固定パイプライン(という呼び方でOK?)のPixelShaderにより描画されているっぽいです。 これはHLSLの仕様なのでしょうか? てっきりHLSLのコンパイルエラーとなり、fxファイルのロードに失敗するかとふんでいたのですが…
428 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 21:53:26 ] 補足です。 >ここで疑問なのですが、何故正しく動いてしまったのでしょうか? の時点では、書いていたPixelShaderが固定パイプラインのそれと同等だったため「正しく動いているように見えた」のです。 ためしにPS()内で必ず「黒」を返すようにしたところ ・メインPCでは正しく黒を ・サブPCでは通常通りの描画を したため「サブPCではPS()が無視され、固定バイプラインのPixelShaderが呼ばれている」と判断したのです。
429 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 21:55:50 ] >>426 どうやらボーンによる頂点変換(ソフトウェア処理)がボトルネックだったっぽ すまん
430 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 22:36:13 ] 確かに俺の環境も PS2.0世代のGPUのくせに PS3.0コンパイルのShaderが HWで動いているな。 多分これは、PS2.0に対応とか3.0に対応ではなく 2.0、3.0で追加された機能に対応しているという話だろう。 ただアンタの言うPSの代わりに固定機能が動くというのはないな。 勘違いだろ。
431 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 23:16:43 ] 対応してなくても動作はするけど 対応してないPCじゃコンパイルはできないよね あとピクセルシェーダーの動作って コンパイルしたマシン(のGPU?)に依存してる? 家のPCでテストした実行ファイルを仕事場のPCで動かすと 家のPCと同じ動作するけど コンパイルしなおすと動作が変わったりする
432 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 23:29:40 ] >>430 お返事ありがとうございます。 >ただアンタの言うPSの代わりに固定機能が動くというのはないな。 うーん、どういじっても PixelShader = compile ps_1_1 PS(); の PS()の中身は無視されてしまいます。 float4 f = {1.0f, 1.0f, 1.0f, 1.0f} return f; という単純なPS()の中身ですら、メインPCだと正しく真っ白になり、 サブPCだとPixelShader = compile ps_1_1 PS();の宣言がないがごとく振舞います。 エフェクトは D3DXCreateEffectFromFile でロードしています。
433 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 23:34:51 ] D3DXが気を利かせてくれてるのかねぇ・・? PS非対応環境なんてもはや持ってないから、アドバイスできん。すまん
434 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 03:39:42 ] なんもエラー出てないの?
435 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 15:10:21 ] 何もエラーでないですね…。 ただ、ReleaseビルドのEXEファイル生実行ですので、次はサブPCのVC6.0上でDebug実行し、D3DXのログ出力を見てみます。 家に帰るのは夜です 正直質問した時は、あっさり 「PSが無い環境では、compile ps_1_1 PS(); って記述は無視されて、固定パイプラインとして実行されるよ」 とかくるかと思っていたのですが…
436 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 22:44:35 ] 435です。 やはり特にエラーメッセージもなく、単にスルーされているだけっぽい動作です。 どなたか心当たりあるかたいらっしゃいませんかー? 仮説 PixelShader = compile ps_1_1 PS(); などは、動作環境のサポートバージョンが、コンパイル指定したバージョン未満の場合は (エラーを出さず)変わりに固定パイプラインを呼び出す
437 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 23:55:38 ] >>436 はじめにサポートバージョンってわからないっけ?CAPSで つか、何がしたいんだっけ?
438 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 00:35:14 ] >>436 それ固定昨日と頂点定義が一致してないとランタイムで死ぬだろ
439 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 09:47:00 ] >>437 やりたいことというより、こういう動作をするものなの?という疑問を解決するのが目的ですね。 CAPSでシェーダのバージョンはとれるので、意図しない動作を起こさないようにバージョンではじくことは可能ですね。 >>438 ちょっといまいちわかりませんが、頂点シェーダでの出力定義が「(固定パイプライン的に)普通」じゃないとランタイムエラーになるということでしょうか? そもそも頂点シェーダでは「普通」じゃない出力はできないと思っていましたが違うのでしょうか? (だから計算結果とかを、使ってないテクスチャーUVの中に入れるとかでごまかして渡す) とりあえず、そんなことをしている場合は描画がしっちゃかめっちゃかになりそうですね。
440 名前:788 [2008/05/13(火) 17:48:16 ] directXのAppwizardってVC++6の時代のものですか? UPdate Summer2003(v9.0b)では,CD3DApplicationという汎用クラスが あったのに最新バージョンではなくなっています. その代わり,DXUTというフレームワークがふんだんに使われています. directXのバージョンによってプログラミングテクニックがころころ変化して いるように見えるんですけど(1〜2年前の参考書が最新バージョンと大きく 食い違っている),いったいどのバージョンを勉強したらお得なんでしょうか? 小生,これからdirectXを勉強しようというものです. やっぱり,最新バージョンでSDKを使ってシコシコ書くのがベストでしょうか? MFCのdaialogベースでdirectxを使ってみたいのですが. あと,DXUTを解説している本やサイト(英語でも可)があったら教えてください.
441 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 18:29:35 ] ttp://www.kohgakusha.co.jp/books/detail/978-4-7775-1272-0 これとかか? ただし、DXUTの仕様はSDKのバージョンごとに変わってたりするんで そのまま使えるかどうかはしらね
442 名前:デフォルトの名無しさん [2008/05/13(火) 19:48:34 ] >>441 ありがとうございます。早速、購入してみます。
443 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 20:05:47 ] ID3DXLineって便利だけど 遅いの?
444 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:29:46 ] >>439 例えば、自分が固定パイプラインと同じ機能をシェーダ使って実装するとしてどうなる?って話じゃねぇの
445 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 23:19:22 ] シェーダの質問なのですが、 D3DFMT_R16FやD3DFMT_A8のように4要素のないテクスチャで float4でtex2Dを取得した場合zやwはどんな値になるのでしょうか? 不定なのか、0が入るのか、前の値が保持されたままなのか、など教えていただけると助かります。
446 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 00:14:53 ] ドキュメントくらいはちゃんと嫁。 float4(0, 0, 0, 1)に対して渡された要素が上書きされるイメージ。
447 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 00:28:16 ] >>446 ありがとうございます。 ドキュメントの探し方が甘かったようです。申し訳ありません。
448 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 18:07:18 ] www.geocities.co.jp/SiliconValley-Oakland/9582/GamePrg/JoyTest.lzh のexeを実行するとちゃんと動くんだけど、ソースをVC++2008で、コンパイルするとうまく動かない。 どうも、lpDIJoyDev->QueryInterface でfalseが返ってるみたいだけど、どこ修正すればよい?
449 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 19:39:30 ] >>448 PCに入ってるSDKのバージョンがそのソースの想定したSDKの バージョンとあってないとコンパイルできないよ
450 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 20:46:38 ] ごめん、コンパイルは通るけどオリジナルと挙動が違うってこと。。
451 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 20:50:07 ] 引数とかも違うだろ?
452 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 12:45:26 ] >>450 exeがなかったので違いがわからないけどソースからビルドしたやつも普通に動作してるよ 挙動が違うとは具体的に何が違うの
453 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 16:21:26 ] 質問です。 Radeon 9600 series AGP 128MB(ドライバは ttp://ati.amd.com/support/drivers/2k/radeonx-2k.html )の環境にて、かなりおかしな挙動をしています。(OSはWindows2000) 何か情報ありませんでしょうか。 なお、その他の環境3個所くらいで試してみましたが、特に問題は見られませんでした。 ・テクスチャーの表示がおかしい 256x256サイズのテクスチャーを10枚程度読み込んだあたりから、一部のテクスチャーの表示がおかしくなります。 テクスチャはD3DXCreateTextureFromFileで読んでいます。 テクスチャーが張られているモデルは、Xファイルで読み込んだ板ポリや、立方体などの単純なものです。 テクスチャーが張られているところが全体的にRGB(0,255,0)な感じに色になり、ほんのちょっとだけ元のテクスチャーの名残が見られるような、なんともバグった感じになります。 読み込むテクスチャーの数を減らすと、さっきバグって表示されていたものも綺麗に表示されます。 描画はプログラマブルシェーダを使わず、固定機能のものです。 ・固定シェーダの挙動がおかしい pDev->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_CURRENT); pDev->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_TEXTURE); pDev->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE); pDev->SetTextureStageState(1, D3DTSS_COLORARG1, D3DTA_CURRENT); pDev->SetTextureStageState(1, D3DTSS_COLORARG2, D3DTA_TEXTURE); pDev->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_MODULATE); と設定しているのですが、 pDev->SetTexture(0, NULL); pDev->SetTexture(1, pTexture1); としたとき、pTexture1の色が乗算されません。 pDev->SetTexture(0, pTexture0); pDev->SetTexture(1, pTexture1); ではきちんと両方の色が反映されるようです。 Radeon 9600は比較的新しいボードですし、むしろ超古いGeForce2MX400とかではまともに表示されます。何か原因が思い当たる方いらっしゃいますでしょうか。
454 名前:デフォルトの名無しさん [2008/05/16(金) 16:37:56 ] 伝説巨人RADEON
455 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 16:52:15 ] 使い方がおかしい
456 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 17:01:16 ] >>455 どこか、>>453 の中に使い方がおかしいことを示す情報があったでしょうか? ご教示願えればありがたいです
457 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 17:14:54 ] ATIとnVIDIAの違いなんじゃね
458 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 17:43:47 ] >>453 の追加情報です。 pIDirect3D9->CreateDevice(adapter, D3DDEVTYPE_REF, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING | D3DCREATE_MULTITHREADED, ¶m, &pDevice); REFモードならバグりようがあるまい。と思って試してみようとしたのですが、 RADEON環境だとこの生成に失敗しました。 …RADEONというものは、思いのほかDirect3Dと相性が悪いのでしょうか?
459 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 19:18:00 ] >>453 SetTexture(0, NULL)してるのに、ステージ0でテクスチャ参照したら駄目だろう。 When a texture stage has D3DTSS_COLORARG1 equal to D3DTA_TEXTURE and the texture pointer for the stage is NULL, this stage and all stages after it are not processed. ARG1にD3DTA_TEXTUREをしておいて、テクスチャにNULLを設定するとそのステージ 以降が無効になる仕様だが、ARG2については何も書かれていないので未定義かも。
460 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 19:27:31 ] >>459 なるほど。ARG2がテクスチャ、かつNULLなときに後のテクスチャを参照してくれていたのは GeForceが「たまたま」そう定義していたからであったわけですね。 気をつけます。 ちなみにそこに気をつけるよう改良してみましたが、1番目の「・テクスチャーの表示がおかしい」は相変わらずです。
461 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 20:04:30 ] >>460 それもなんかおかしいんじゃねぇの?w 基本的にnVidiaのボードは確かに未定義や おかしな部分を変な風に救っちゃう設定だからRADEONで開発したほうがいいぜ 俺も開発のときにnVidiaのボード使ってて苦労した
462 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 20:16:19 ] >>459 知らなかったw
463 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 20:24:29 ] 固定シェーダの恐怖だな nVidiaとその他一部のボードでは動くんだけど それ以外ではうんともすんとも言わないとかいう状況がありえる恐怖 (納期まで一週間とかいう状況ではじめてRADEONで動かして画面真っ黒になったときは血の気が引いたw) HLSL使うようになってからそういう苦労は一応消えた 固定シェーダ止めるとこの辺はグッと楽になる
464 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 20:27:22 ] >(納期まで一週間とかいう状況ではじめてRADEONで動かして画面真っ黒になったときは血の気が引いたw) > いやあああああああ
465 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 21:05:12 ] >>461 なるほど、とりあえずRADEONの購入は検討してみます >>463 それは血の気が引きそうですね 私も公開するゲームを作っているので、なるべくRADEONにも対応したいところです 全てHLSLで書くのも検討していますが、「・テクスチャーの表示がおかしい」の件は、HLSLを使った描画の部分でも発症しているので困ったものです…
466 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 21:47:12 ] DirectXの勉強をはじめたいのですがもう固定機能パイプライン?は無視してHLSLとかプログラマブルな シェーダーの勉強を始めたほうがいいのでしょうか?
467 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 21:55:47 ] 自分の開発環境がプログラマブルシェーダに対応しているなら、そっちのみでいいと思われる。 VertexShaderは最低でもソフトウェアエミュレートができるし、 PixelShaderにしてももう対応していないグラボなんて存在しないと思っていい。 でもオンボは対応してねーんだよなぁ('A`)
468 名前:466 mailto:sage [2008/05/16(金) 21:58:34 ] MSのカンファレンスでもらったVS2008スタンダードにGe7900gs、OSはXPです。 固定機能はさすがにいいですかね。
469 名前:466 mailto:sage [2008/05/16(金) 21:59:39 ] ありがとうございました。
470 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 22:03:59 ] 皆さんノートPCのことも考えてあげてください もしくはこの世から全てのオンボードPCを破壊してくださいマジでもう
471 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 22:15:54 ] >>452 vc++2008ではまんまではコンパイルとおらなかったので、DInput.cppの 63行目 ret = DirectInput8Create(hinst,DIRECTINPUT_VERSION,IID_IDirectInput8,(void**)&lpDInput,NULL); 115行目 ret=lpDInput->EnumDevices(DI8DEVCLASS_GAMECTRL,InitJoystickInput,lpDInput,DIEDFL_ATTACHEDONLY); に修正してコンパイルとおしたんだけど、126行目がfalseを返してくるの。
472 名前:453 mailto:sage [2008/05/16(金) 22:29:39 ] 色々アドバイスありがとうございました。 >・固定シェーダの挙動がおかしい この件ですが、RADEON上だけでなく、GF上でもREFモードだとうまく表示できませんでした。 >>459 さんのアドバイスがクリーンヒットだったようで、気をつけながら直したところ、REFでも綺麗に表示されるようになりました。 RADEON上でpTexture1が乗算されるようになったようです。 (ただし、pTexuter1自体がバグっているため、乗算はされたものの、おかしなテクスチャが乗算されています) 今後はREFモードでちょくちょくチェックしながらやっていきます。 現在は、RADEON使いと連絡がとれなくなってしまったため、 「・テクスチャーの表示がおかしい」については後日また調査して、報告します。 どうしても治らない場合はまた相談させていただくかと思いますが、その時はよろしくお願いします。
473 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 22:36:29 ] お疲れさん ちゃんと報告してくれる質問者は歓迎だぜ
474 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 23:08:47 ] ウホッここを覗いててよかった ラデオン買ってくる
475 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 07:41:55 ] >>471 DIrectX 7以下じゃないと動かないよ 8にするなら全部書き換えろ
476 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 07:49:36 ] >>448 Dinput.hに #define DIRECTINPUT_VERSION 0x0700 を追加
477 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 20:09:42 ] 関係ないけど、DirectInputってウイルスバスターが不正変更で〜って怒るとない? お兄さんたちはどうしてるのかな?
478 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 20:12:54 ] あ、あれってDirectInputのせいなんだ。。。 僕の作ったソフトも怒られるから気になってたけど。。。
479 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 16:32:53 ] ウイルスバスターはDirectInput使うと怒るのね 友人にテストしてもらったら 「不正な変更とか出る ウイルスだろこれ?」 とか言われたお ネットワーク対応ゲームでも作ろうかと思うんだが、 DirectPlay使うのとWinSock使うのとどっちがいいんだろ DirectPlyaはWinSockに比べるとダメだという話をよく聞くけど どこがどうだめだかよくわかんね 手軽に実装するならDirectPlayのほうが楽そうにも感じる そこら辺詳しい人いませんか?
480 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 17:25:02 ] あんま詳しくないが、TCP使えないらしいお。 そういった制限があるから、やっぱ「お手軽通信」なイメージはある。 Winsockは、アプリケーションが使うTCP/IPの基本かつ全てだから DirectPlayに出来てWinsockに出来ないことはない。 そういう意味だとオモ<Winsockに比べるとダメ 本当にTCPが使えないのなら、オンラインRPGには無理なだ。
481 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 18:00:21 ] 今右ドラッグで3Dオブジェクトを回転させるのをやっていて、とりあえず D3DXQuaternionRotationYawPitchRoll(&q,マウスのX変移,マウスのY変移,0); とやってそれっぽい動きにはなってるんですが、どうもメタセコとかと操作感が違うんですよね。 ドラッグ開始時にXYの回転軸を作って、それに対する回転てやりたいんですが 何使ったらいいですか?
482 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 18:11:10 ] >>481 RotationYawPitchRollは角度が非常に小さければ任意軸周りの回転に 近い動きをするが、本来は全く違うもの。 マウスの移動量とZ軸で外積を取って、その軸周りの回転を使う。
483 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 18:20:19 ] >>482 親切にありがとうございます。意味はなんとなく分かるんですが、頭がついて来れなくて・・・ で、それはZ回転が起こらない場合にのみ使えるんですよね?多分(今回はそれでもいいですが)
484 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 19:57:07 ] >>479 色んな通信に対応しすぎてて、初期化が遅いのが一番の不満かな<Play といってもPlay使ってたのはDirectX7の頃だから、改善されてるかもしれんが。 WinSockなら全ての通信を自分で把握できるのが強み。
485 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 20:27:13 ] >>484 DirectPlayは廃止されて久しい。 WinSockを叩くのが一番無難で楽しい。
486 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 20:32:54 ] WinSockだとセッションとかのゲーム的な概念がないから そこらへんも全部自分で実装しなきゃならないんだよね? WinSockのネットゲームで使えそうなお手ごろサンプルがあるといいんだけど
487 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 03:08:12 ] 質問です。 DirectXを使って2Dゲームを作ってみようと思ってMSDNのリファレンスを見ていたところ、 CreateVertexBuffer()で頂点バッファを作ってLockとUnLockの中で頂点を処理していました。 ですが、別のホームページにはこれらを使わずに描画してるページもありました。 2Dの場合はCreateVertexBufferを使わずに描画したほうがいいのでしょうか? それともCreateVertexBufferを使わなくても描画出来るという解釈でいいのでしょうか?
488 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 03:22:35 ] 別にどういうやり方しても構わないよ。 ただ、 ・頂点バッファをビデオメモリ上、AGPメモリ上に作ると描画が速い ・が、そういう場所に作った頂点バッファをLockするのは重い(ビデオカードの処理を止めるから) ・システムメモリ上に作った頂点バッファのロックなら遅くない(多分。)が、 それは頂点バッファ作らない方法と同じこと。ビデオカードから遠いので描画は遅い 毎フレーム書き換えるような頂点配列なら、システムメモリに置くか 頂点バッファ使わずにやるのがのがいいんじゃないかと。 検証とかしたことないので間違ってたら指摘ヨロ
489 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 03:26:37 ] チラシの裏にでも書いてろ
490 名前:487 mailto:sage [2008/05/19(月) 03:43:14 ] >>488 なるほど、どっちの処理が重いかで使い分けるといいみたいですね。 ありがとうございます。
491 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 10:26:00 ] >>488 追加⇒DYNAMICとDISCARDフラグを組み合わせると描画もLockも速いがメモリを食う。
492 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 13:56:52 ] >>489 なるほど、チラシの裏ですね よくわかりました
493 名前:472 mailto:sage [2008/05/19(月) 19:22:45 ] 色々アドバイスいただいた>>453 です。 >>459 さんのアドバイスによる修正のおかげか、RADEON上でも綺麗に表示されたそうです。 ありがとうございました。 D3DTSS_COLORARG1 にTEXTURE D3DTSS_COLORARG2 にCURRENT なるべくこうするのが吉。というわけですね。 大抵の初心者サイトがこうしている一方、時々は逆も見かけるようです。 他の人が同じ失敗しませんように…。
494 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 19:35:23 ] チェックしたら見事に失敗してたわ SDKをもう一回全部読み直したほうがいいかもなー・・・
495 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 20:06:53 ] 演出について質問 キャラが地面に着地した際、演出として着地点のまわりに衝撃波を立てたいと思っています 例えるなら、牛乳の入ったコップに牛乳を一滴おとした時にできる、王冠のようなものです こういう演出はどのようにして実装するのが良いでしょうか? 今まではボーンアニメまでしかやったことがないのですが、モーフィングという技術のほうがより良さそうな気がしています
496 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 23:56:15 ] >>495 スケーリングで十分
497 名前:487 mailto:sage [2008/05/20(火) 00:09:01 ] >>492 調べてみたら動的に確保したメモリを静的に確保したように見せるとのことだったんですが、 これはVRAMとAGPメモリに確保して同期させるという解釈でいいのでしょうか?
498 名前:487 mailto:sage [2008/05/20(火) 00:09:52 ] すいません>>492 ではなく>>491 でした
499 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 01:53:49 ] >>497 昔はそうなんだが、現在のVGAだと諸々の理由でシステムメモリを介したコピーを 行っているものが多いので、動的な頂点バッファはほとんど意味を成さなくなっている。 経験で言うならシステムメモリよりも頂点バッファを使う方がパフォーマンスが高くなる 傾向があるのは確かだが、大半は大した性能差があるわけでもないし、 そもそも適切に扱うためのフラグ設定が頂点バッファはわかりにくいので、 個人的にはシステムメモリ(DrawIndexPrimitiveUP等)で実装することをお勧めする。 2Dスプライトの実装なんぞDrawPrimitiveのバッチ処理さえしておけば それ以上は深く考えんでも良いと思うぞ。
500 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 08:28:59 ] AGPメモリを使うか否かで動的なデータは速度に大差が出るぞ
501 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 12:44:39 ] 非同期で処理させるかの違い
502 名前:デフォルトの名無しさん [2008/05/20(火) 19:02:00 ] まあ、自分のゲームでやってみるのが一番 つーのは想定している状況によりけりって感じだから なんでも使える汎用ルーチンなんて作ろうと考えないで状況に応じて対処したほ
503 名前:487 mailto:sage [2008/05/20(火) 20:53:38 ] >>499-502 2Dの処理にそこまで考える必要はないけど、 詳しく知りたい場合は自分のゲームで実装して調べたほうが早い、とのことなので、 時間に余裕があるときに調べてみたいと思います。 色々ありがとうございます!
504 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 21:17:01 ] 環境にもよるんじゃないか
505 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 21:49:34 ] WinSockだとポート空けるのをユーザー側に頼まなければならないので UPnP対応してるDirectPlayつかうことにしたぽ
506 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:42:13 ] UPnPの対応はDirectPlayに頼らなくても簡単に出来るぞ
507 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:55:18 ] >>506 www.bosuke.mine.nu/neta/upnp.shtml これためしてみたけどルータがふるくてだめだった しかしDirectPlayだとポート開放しなくても通信できる もっといい方法があるならおしえてくださいませ
508 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:56:06 ] Direct3D9.0のデバイスロストからの復帰で ・D3DPOOL_DEFAULTのテクスチャ解放 ・D3DXFONTのOnLostDevice()呼び出し この2つは順番適当 ・D3DXSpriteのOnLostDevice()呼び出し pDevice -> Reset(&Param); ・D3DXSpriteのOnResetDevice()呼び出し ・D3DPOOL_DEFAULTのテクスチャ確保 ・D3DXFONTのOnResetDevice()呼び出し この2つは順番適当 ・レンダーステートの回復 てやってるんだけど、画面真っ暗です。これ以外に何やるんでしょう? あと順番に決まりはあるんでしょうか?
509 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 23:03:40 ] >>508 確保したリソースの解放をちゃんとしましょう。 Debug Runtimeでエラーメッセージの確認をしましょう。
510 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 20:30:26 ] >>506 ひょっとして upnp.h とか使うの? ネット探しても具体的なやりかたが乗ってるところがないのが困る
511 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 23:15:17 ] >>510 ttp://www.bosuke.mine.nu/neta/upnp.shtml おもくそ有名なサイトがあるわけで ぐぐろうよ
512 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 00:12:19 ] お前は空気読め
513 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 02:01:13 ] 「頂点ベースの描画」という言葉の意味がよく分かりません 対になるものは何でしょうか?
514 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 16:48:56 ] ポリゴンで描画(3つの頂点)で描画と思ったらいいんじゃね? ポリゴン2個で四角形になるお
515 名前:513 mailto:sage [2008/05/22(木) 16:53:09 ] >>514 知識不足ですみませんが、そうでない描画の方法があるのでしょうか?
516 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 16:56:14 ] つーか、「ポリゴンで描画で描画」ってなんだよ。
517 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 17:25:02 ] そもそも 「頂点ベースの描画」なんて聞いたことがない
518 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 17:28:55 ] >"ポリゴンで描画で描画"との一致はありません。 >"頂点ベースの描画"の検索結果 1 件中 1 - 1 件目 (0.14 秒) >"頂点ベース" の検索結果 約 148 件中 1 - 10 件目 (0.24 秒)
519 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 17:59:10 ] 頂点シェーダーでライト当てるかピクセルシェーダーでライト当てるかって事でないん? そのくらいしかない気がするんだが。
520 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 19:50:11 ] >>513 どこで頂点ベースって聞いたんだよ? >そうでない DirectDrawのスプライト描画のことじゃね? さいきんのゆとりはDirectX7以前を知らんのか
521 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 19:50:44 ] ポリゴンで描画の間違い
522 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 22:30:57 ] そもそもDirectXにスプライトなど存在しない
523 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 22:39:14 ] ジオメトリベースド イメージベースド
524 名前:508 mailto:sage [2008/05/22(木) 23:22:56 ] バックバッファの解放と確保 ステンシルの解放と確保も付けたんですが、まだPresent(0,0,0,0)がD3DERR_DEVICELOSTを 出してきます。何が足りないんでしょうかT-T
525 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:27:27 ] それは作った本人にしかワカリマセン。
526 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:29:53 ] POOL以外で作ったテクスチャとか頂点とか全部削除する
527 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:32:30 ] >>526 StateBlockとかもだな。 EffecとかFontとかSpriteも中でStateBlock作ってるからロスト対策が要るけどなー
528 名前:508 mailto:sage [2008/05/22(木) 23:45:28 ] フロントバッファは何もしなくていいんでしょうか?StateBlockは作ってるつもり はないんですが・・・何か他に暗黙的なものがあったら教えていただけないでしょうか?
529 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:52:57 ] スレ住人が超能力に目覚めるよりはソースを出す方が解決は早い思います。
530 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:53:04 ] D3DX〜系のLostDevice()は全部やってる?
531 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 00:16:03 ] DX10で作ればおk
532 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 00:17:15 ] Resetしてないんだろwww
533 名前:508 mailto:sage [2008/05/23(金) 00:43:08 ] >>528 ソースのみですか?関係ないクラスを除いた抜粋でいいですか? >>530 フォントとスプライトなら呼んでます。 >>532 Resetからの返り値も出力してるので多分大丈夫だと思います・・・
534 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 00:53:32 ] ResetはPresenがD3DERR_DEVICELOST以外を返した後の話だから関係なくね?
535 名前:508 mailto:sage [2008/05/23(金) 00:58:54 ] ttp://ccfa.info/cgi-bin/up/src/up19318.zip なんかいろいろ言われそうで怖い・・・よろしくお願いします。
536 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 12:09:02 ] 現在、大学3年でシェーダーの勉強をしています。 それで、データの可視化の研究をしてみたいと思うようになったのですが、シェーダーの出番ってありますか? 無駄になるのもなあと思っているのですが。 OpenGLも少し勉強したことはあったのですが、可視化の分野はどちらを使ったほうがいいでしょうか? また、仮にシェーダーを使う場合、どのような研究のネタがあるでしょうか?
537 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 13:04:30 ] どう可視化したいのかも書かずに質問とな?
538 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 13:10:17 ] と言うか、綺麗に見せたきゃ使うような物だからあんまり意味なくね?
539 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 14:29:49 ] >>535 common.h無いいわれるお できればプロジェクトもあげてほすぃ デバッグしやすい
540 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 15:47:51 ] 関係ないが Graphics::drawSprite のBegin End の対応がおかしい
541 名前:508 mailto:sage [2008/05/23(金) 19:03:13 ] >>539 ttp://ccfa.info/cgi-bin/up/src/up19342.zip プロジェクトはBCCのしかなかったので、ついてません。申し訳ないです。 >>540 多分治ってると思います(? C++と窓とDirectX同時に勉強してたんで、拙いところがたくさんありますが
542 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:08:12 ] 現在ブロック崩しを製作中なのですが、もし「20個あるブロックがなくなったら」という状況を表現するために下記のように打ったら、「error C2106: '=' : 左のオペランドが、左辺値になっていません」とエラーが出ました。 どうすればいいのでしょうか。 if(block1==0&&block2==0&&block3==0&&block4==0&&block5==0&&block6==0&&block7==0&&block8==0&& block9==0&&block10==0&&block11=0&&block12==0&&block13==0&&block14==0&&block15==0&& block16==0&&block17==0&&block18==0&&block19==0&&block20==0)
543 名前:デフォルトの名無しさん [2008/05/23(金) 23:12:19 ] すいません、正式に言うと「ブロックがなくなったら」ではなく、「ブロック変数がゼロになったら」でしたね
544 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:25:17 ] block11=0
545 名前:508 mailto:sage [2008/05/23(金) 23:26:17 ] よくこの釣り間違い探しをやるな
546 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:26:42 ] >>544 intした名前が「block11」だったのがまずかったってことですか?
547 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:40:00 ] >>546 マジで言っているならプログラミングなんてやめて旅にでも出ることをお勧めしておく。
548 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:42:28 ] >>547 今気がつきました=が一つしかありませんでしたね 初歩的なミスでした
549 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:43:40 ] もっと根本的に変数使いすぎ 配列など、別のアプローチを考えれ
550 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:46:02 ] いやあ、恥ずかしいです…
551 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:48:11 ] 配列はおろか、ブロックの数をカウントするカウンター作ったほうがいいだろ…。あとここDirectXスレ…
552 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:51:29 ] おっとここはDirectXスレだったな 釣られちまったぜ
553 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 01:25:59 ] >>545 誰もやってない悪寒。 少なくとも俺はソースがあまりにひどかったので1度動かして消した。
554 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 11:40:55 ] この前RADEONだと色々厳密という話しがでたので、RADEON買って来て試してみた 今まで遊びで作ってたほとんどのゲーム、まともにうごかねえw 色々見直そう
555 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 12:02:08 ] Radeon、Geforce両方をDebugRuntimeでチェックするのがベスト。 nVidiaのドライバーは空気を読見すぎるのが困る。 しいていうならタグが変でも一応見れちゃうIEと手厳しいネスケの違いみたいなもんか。
556 名前:508 mailto:sage [2008/05/24(土) 12:18:10 ] >>553 545のは直上の人に言った言葉です ていうか、特に何がやばそうでしたか?
557 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 13:05:57 ] >>556 まずアプリの終了時にバックバッファ解放してないだろ。 Getしたものは全部Releaseしろ。 あとSDKいれてるならDebugRuntimeで試せ。 それなら終了時に解放してなかったりD3Dエラーが出たときにデバッガで落ちるようになる。
558 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 14:31:53 ] CComPtrマンセー
559 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 16:51:30 ] 俺はこんな感じでやってるわ class ICallbackDeviceReset { public: ICallbackDeviceReset();// std::setでつくられたグローバルリストに登録 virtual ~ICallbackDeviceReset();// std::setでつくられたグローバルリストから解除 virtual OnLostDevice()=0; virtual OnResetDevice()=0; }; デバイスのロスト>リセット時に呼び出されたいクラスは、このクラスを継承するようにすれば 自動的に呼び出されるようになる。
560 名前:508 mailto:sage [2008/05/24(土) 16:59:16 ] >>557 バックバッファの解放とはGraphicsオブジェクトにセットしたポインタをリリースしろということでしょうか? それならばGraphicsオブジェクト終了時に自動解放されています。 ところが、デバッグモードで見たらMemory still allocated! Alloc count = 94の文字がorz しかもAllocIDが出ないので、何がまずいのか分かりませんでした・・・ CreateDeviceの際にパラメータに書いてあるバックバッファやステンシルバッファといった物は 明示的な解放はいらないですよね? >>559 std::setがstd::listなだけでまったく同じことしてます。
561 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 17:06:50 ] >>560 listに入ってないリソースを疑うか listの処理そのものを疑え。
562 名前:508 mailto:sage [2008/05/24(土) 17:27:19 ] リリース忘れはどうやらスプライトのようでした・・・ これで先のエラーは出なくなったんですが、Ctrl+Del+Altを押した時に Direct3D9: (ERROR) :Device is in an invalid state. Only Reset, TestCooperativeLevel or Release could be called がひたすら出てしまいました。デバイスロストからの復帰に失敗してるんでしょうが、なにぶんメッセージの意味が分かりません >>561 どうやらlistが怪しいようです・・・。ここをもうちょい詰めてみます。
563 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 17:54:12 ] >>562 listだと、アドレスを登録する時に ・重複が怖い(コンストラクタでのみ自動登録されるなら心配ないが) ・解放時の検索速度が、setのほうが圧倒的に速い って利点があるぜ。 ソース見ようとしたけど404だったんで突っ込んだアドバイスしてあげられないな。 もう一回UPする気ない?(スプライト修正版を)
564 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 17:54:58 ] なんか日本語があからさまにおかしいが、脳内補完してくれ。 setのほうがいいよってことで(;´Д`)
565 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 17:58:53 ] メッセージの意味は、 デバイスが不正な状態になってます。 この場合、Reset、TestCooperativeLevel、Releaseのどれかのメソッドしか呼び出せません。 つまり、まぁデバイスがロストしてるよと。復帰させるか、あきらめろと。
566 名前:508 mailto:sage [2008/05/24(土) 18:01:32 ] >>563 リストどうやら間違ってませんでした。 ttp://ccfa.info/cgi-bin/up/src/up19435.zip よろしくお願いします。
567 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 18:16:31 ] oggがどこで生成されるのか謎だからあくまで予測なんだが デバイスを作成したスレッドと、デバイスをリセットしようとするスレッド。 違うスレッドになってね? 全部リソース解放してても、スレッドが違うと失敗するんだが。
568 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 18:26:22 ] すまん、oggの作成場所発見したわ。 同じスレッド上だな。 しかし綺麗なソースだな。 うちの部下どもに爪の垢を煎じて飲ませてやりたいわ パッと見問題はなさそうな分、とりあえずD3D関連の生成物を全部カットしてリセットして、問題なければ一部だけ生成するようにしてリセットしてみて… ってやっていくしかないなぁ
569 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 18:47:42 ] Graphics& GameWindow::getGraphics(){ if(device != NULL && g.target->target == NULL){ device->GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO,&(g.target->target)); } return g; } ここのバックバッファをReleaseしてないのが原因じゃねーか?
570 名前:508 mailto:sage [2008/05/24(土) 19:03:26 ] >>569 できたお ありがとうございました。 ところでテクスチャからサーフェイスをGetしていた場合Releaseの順番てどちらからでも問題ないですか?
571 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 19:07:54 ] 作ったのと逆の順で解放するのが良い。 そうしなかった場合不具合が起きるかは未検証だが、プログラムでは逆順解放が基本。 サーフェイスは描画前に取得して、描画終わったらさっさとReleaseしちゃいな。 取得にほとんど時間かからないから。
572 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 19:42:45 ] CComPtrとか使えって言ってんだろ。初歩的なミスが綺麗さっぱりなくなるぜ?
573 名前:508 mailto:sage [2008/05/24(土) 19:50:08 ] >>572 CComPtrってデバイスロストでもリリースとかしてくれるんですか? なんか話のポイントが違う気が・・・
574 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 19:50:52 ] >>572 確保しっぱなしだったから、結局はデバイスリセットの時に正しく解放できなかったと思うぜw そういや508よ。 「ベース メンバ初期化リストで使用されました」 のワーニング出てたぞ。直しておけよ。
575 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 20:04:05 ] warningをちゃんと潰す、DebugRuntimeでエラーがない事を確認する、 nVidiaのドライバはATiに比べるとかなりエラーに甘いのでちゃんと nVidiaとATiの両方で動作確認をしっかり行なう。
576 名前:508 mailto:sage [2008/05/24(土) 20:39:35 ] >>574 マジすか・・・BCCでは出なかったのに、工夫してみます。 本当に親切にありがとうございました。ノシ
577 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 21:13:16 ] デバッグの警告レベルを最大にしたら (WARN) :Ignoring redundant SetTextureStageState が出まくるんだけど・・・ かといって、デフォルト値使われるのかと思ってコメントアウトしたら全然違う動作しやがる
578 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 21:42:26 ] 同じのを何度も設定してるんでないの? 最大レベルだとどうでもいいwarningが大量にでるから1レベル下がいいよ。
579 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 21:50:56 ] あるねー>どうでもいいwarning なんか最近のVCで昔ながらのstr〜関数を使うだけで 警告出しやがるようになりやがったし VC作った奴の感性がちょっとわからなくなった リソースわけられないとかそっちの方をどうにかしてほしいのに 余計なもんばっかり増えていくな
580 名前:577 mailto:sage [2008/05/24(土) 21:52:09 ] 何度も設定はしていないけど、 一番最初に描画される時にも出てるから、そこで警告出るんならデフォルト値使われてるのかな、と思ったんだけど、 ちゃんと設定しないときちんと描画されない。 余計な警告は無視する方が吉みたいですね
581 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 21:59:51 ] 警告でウザイのは、例外を使ったときのだな。 わかって使ってるのに
582 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 22:25:58 ] >>580 それはデフォルト値が使われているという警告じゃなくて、 Aという値を前回セットしたにも関わらず、同じ値をセットしたときに起きる。 フレームをまたいでもチェックされる。
583 名前:577 mailto:sage [2008/05/24(土) 22:36:24 ] いやだから、一番初めにセットした時に出るってことは、デフォルト値とかぶってるんじゃないのか、 と思ってたってこと
584 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 00:22:38 ] DirectXで両面ポリゴンは、描画可能なのでしょうか?
585 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 00:26:38 ] 可能です!
586 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 00:41:07 ] ありがと。 エクスポートがうまくいかなかったのかな…。 もしかして、なにか設定が必要ですか?
587 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 00:47:21 ] 自己レスです。 LW使ってたのですが、付属プラグインは片面になってしまうそうで・・・。 LWからのエクスポートで、何か方法を知っていたら教えてください。
588 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 01:13:55 ] 実行時のD3DのSetRenderState()の設定次第なんだが・・・
589 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 01:23:46 ] LWでダブルサイド指定じゃなく、 ちゃんと倍の頂点使って裏のポリゴンを作っておく エクスポート時に、ダブルサイド指定のポリゴンを 裏ポリ用頂点を作ってくれるエクスポーターなんて知らんね… UVやらマテリアルやら関係なく、ただ両面描画しれてば良いだけなら >588の言う通り
590 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 01:45:51 ] とりあえずD3DRS_CULLMODE(ですよね?)を指定しておき、 あとで裏にポリゴンを作ろうと思います。 ありがとうございました。
591 名前:デフォルトの名無しさん [2008/05/25(日) 06:32:23 ] Xファイルを出力、編集するソフトって何がありますか?
592 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 09:44:08 ] メタセコイア 有料版でもインポート・エクスポート以外は使える。 その.mqoをLEで読み込めば・・・・
593 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 10:23:25 ] 現状、メタセコでモデル作成。POSERでBVH作成。LWで合成してXファイルで出力 ってやってるわ
594 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 11:26:51 ] DLL_APIってなんですか?DLLを作る命令?
595 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 12:04:04 ] >>594 マルチすなや。
596 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 16:40:33 ] デバイスロスト時ってもしかしてSetTextureStageStateで設定した情報も失われてる!?
597 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 18:53:43 ] Presentしたらステート必ずセットし直すか、ステートブロックでも使え。
598 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 18:57:10 ] Xファイルに出力したカメラのアニメーションを利用したいのですが、どうすればいいのでしょうか?
599 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 19:06:22 ] >>597 ステートブロックはデバイスロストしたら一緒にロストすんぞ。 >>598 どうもこうもアニメーション情報を読んで再生する。
600 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 03:43:28 ] フルスクリーンのときにスクリーンサイズを600×400にするとCreateDeviceに失敗し、 640×480などのサイズにすると成功するんですが、どういった理由でこうなるのですか? LPDIRECT3D9 p_d3d; D3DPRESENT_PARAMETERS d3dpp; D3DDISPLAYMODE d3ddm; p_d3d = Direct3DCreate9(D3D_SDK_VERSION); m_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm); ZeroMemory(&m_D3Dpp, sizeof(D3DPRESENT_PARAMETERS)); d3dpp.BackBufferCount = 1; m_D3Dpp.Windowed = TRUE; m_D3Dpp.BackBufferFormat = d3ddm.Format; d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.EnableAutoDepthStencil = TRUE; d3dpp.AutoDepthStencilFormat = D3DFMT_D16; // ここまで同じ設定 d3dpp.BackBufferWidth = 600; d3dpp.BackBufferHeight = 400; // これをCreateDeviceに指定すると失敗する d3dpp.BackBufferWidth = 640; d3dpp.BackBufferHeight = 480; // これをCreateDeviceに指定すると成功する
601 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 05:26:43 ] 600x400のモードをデバイスがサポートしてないだけじゃないの? 関数の戻り値とか調べてください
602 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 08:55:42 ] 600x400なんて画面モード、存在するのか?
603 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 12:36:49 ] >>600 グラフィックボードで使える解像度じゃないからだよ EnumAdapterModes( )でそのデバイスで使える解像度を列挙できるからその中から選べ
604 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 17:09:35 ] >>602 PC-98時代の遺産だな。仕事で出会う確立はもはやレアだろ。
605 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 17:31:36 ] PC-98でも横は640だし・・・
606 名前:604 mailto:sage [2008/05/28(水) 17:54:34 ] をや??・・・640×400と見間違えた。
607 名前:600 mailto:sage [2008/05/28(水) 20:59:35 ] >>601-606 なるほど、使用出来る解像度の問題だったんですね。 ありがとうございます。 ついでに質問なんですが、解像度は現在のディスプレイの解像度を使ったほうがいいのでしょうか? それとも各ディスプレイごとに使用出来る解像度を調べて、自分のプログラムにあった解像度を選んだほうがいいのでしょうか?
608 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:09:54 ] >>607 他のゲームを参考に汁 どっちのタイプもあるよ 自分の合う方法を探せ
609 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:18:53 ] 320×240,640×480,800×600,1024×768のどれかなら、 必要な解像度を動作環境に明記しとけば大丈夫。 一般的な解像度はこの辺だからな。
610 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:21:45 ] そういや、2Dゲーは解像度固定が、3Dゲーは解像度可変が多いよな。
611 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:30:33 ] ポリゴンは解像度に依存しにくいからな
612 名前:600 mailto:sage [2008/05/29(木) 01:10:37 ] >>608-611 他のゲームの解像度と一般的な解像度と開発環境などと相談して決めるのがよさそうなので、 そこらへんを考慮しつつ可変か固定か決めてみたいと思います。 ありがとうございました。
613 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 12:25:43 ] >>609 320×240 ↑はWindowsではぜんぜん一般的じゃないっぽ
614 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 12:37:57 ] 320x240でスクリーンショット撮ってみた neko-loader.net/pict/src/neko22282.jpg
615 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 12:55:35 ] 出来ないとはいってないってw オンボードとかだとこけるやつが結構あるって話 無理に使う必要もないしね
616 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 12:56:04 ] >>614 快適にWindowsライフが過ごせそうですね
617 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 13:37:54 ] せっかくだからVisualStudioとかでやってほしかったぜ
618 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 14:14:49 ] 320x240は画面プロパティからは選べなくても、内部的にサポートしてる場合が多いよ。 というか、サポートしてないのみたことないな…。 同人ゲームで恐縮だが、EFZという格闘ゲームがフルスク320x240固定なんだが、動作しないって人聞いた事ない
619 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 15:31:40 ] 256色を使えないXPが無いのと同じだよな
620 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 15:43:50 ] >>618 ゲーム画面が320x240でも、 640x480で画面作って拡大して描画してる場合もあると思う。 グラフィックボードがしょぼくてソフトウェアレンダリングな同人が流行ってた頃、 このサポートはどこでもやってたような気がする。
621 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 17:32:40 ] www.tasofro.net/cgi-bin/cbbs00/cf.cgi?mode=all&mo=1834&namber=1832&rev=0&page=0 [1832] 【技術サポート】 起動できません- ■親トピック/記事引用■ □投稿者/ ミステイク -(2007/01/03(Wed) 21:22:48) はじめまして、本日EFZを買ったのですが、インストールした後、起動できませんでした。 起動させると、画面が真っ暗になって「320※240の解像度の設定に失敗しました」と表示されます。 どうすれば起動できるのでしょうか? もしかすると、解像度に問題があるのかもしれませんが・・・。 OSはXp、解像度は最低でも800×600です。 EFZワロス
622 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 17:33:40 ] と思ってたが、640x480もサポートしないディスプレイとかあるのか。 引き延ばしできないノートとかでありそうだな。 レアすぎるから、 これは無視してもいいか。
623 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 17:43:20 ] >>609 明記が必須かも試練。w
624 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 18:11:11 ] >>622 EeePCがダメだった希ガス>640*480 あと、Pivot使っていると480*640は選択できるが640*480は選択できなくなる。
625 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 18:14:37 ] まぁ、最近のビデオチップはハードウェア的にはどんな解像度でもいけるが、 ドライバで制限してるだけなんだけどね。
626 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 18:41:46 ] サポートするのは、最近だけじゃねえよ
627 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 20:17:09 ] >>621 そうそうそうそう 解像度の最低ラインが800x600になったおかげで 昔のフルスクリーンのゲームが起動できなくなったのな 後、256色のゲームも起動不可
628 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 20:56:57 ] つかWindowsXPは640x480を正式サポート対象外にしてた憶えがあるぞ あやふやだけど
629 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 10:24:06 ] うっそ、640x480+16色 はハードが絶対サポートしてるんじゃねーのかよw ドライバいれてない時や、セーフモード時はどうなってんだそれ
630 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 10:26:33 ] winならMSの標準ドライバがインストールされてるしょ
631 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 11:20:48 ] XP以降は画面のプロパティで選択できないように制限かけてるだけで 640*480が使えないわけじゃないよ。8bitカラーだって使える。
632 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 12:18:09 ] >>627 間違っています。 以上。 はい次の方。
633 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 14:48:58 ] uzeeeeeeeeeee 結局、普通に640x480使えねーのがあるってことでいいじゃないか
634 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 14:55:07 ] あるの?
635 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 15:10:35 ] >>633 いや、ほんとに640x480が動かないPCなんてあるの?って話なんだが。 確たるソースある?
636 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 15:23:53 ] >>621
637 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 15:28:23 ] 640x480の解像度にできない -OKWave okwave.jp/qa2299134.html
638 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 15:33:46 ] >>637 思いっきり9x系からXPに移ったPC初心者の書き込みじゃねーかw
639 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 15:35:56 ] DirectXで640x480に設定できないのかという話じゃないのかね
640 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 15:50:10 ] blog-imgs-40.fc2.com/n/e/t/netamichelin/2008052810.jpg
641 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 16:33:11 ] >>635 動く、動かない、という話じゃなくXPで640x480はサポートできないだろって話 WinXPの通常使用のシステム要件に、「800x600以上対応のVGAが必要」というのがある以上、 640x480でWinXPが動かなくても、XPで800x600未満が選択できないPCがあったとしても 「それは残念でした。640x480を使うので、Win2000とかで動かしてみてください」と 返すのが正常、という話。
642 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 17:36:35 ] >>641 意味わからん 「XPの動作には800x600以上対応のVGAが必要」であることと、 XPで640x480でフルスクリーンモードのデバイスが作れないこと。 これらはイコールではないでしょ。 「XP用のドライバでは640x480をサポートしなくても構いません」と規定されているのかという話をしてるの。
643 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 17:56:37 ] おまえらもういいだろうw
644 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 19:02:55 ] ところで本当は何について話していたの?
645 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 19:16:22 ] 2Dゲーの解像度のサポートを何処までやるか?だったっけ?
646 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 21:04:30 ] 古いエロゲーがどこまで動くかですよあやよさん
647 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 21:30:02 ] >>641 OS的に選べないようにしてるだけで、グラボのプロパティからなら 余裕で320x240とか選べるようになってる。 つまりDirectX利用可能。
648 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 21:44:09 ] ちょっとまて、俺、今普通に640x480解像度のDirectXつかったゲームしてるんだが、XP64bitで。
649 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 21:45:56 ] もういいよお前ら 自重しろ
650 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 21:53:47 ] >>635 インクレティブマシーンが動かなくなってる まず256色に変更できない ディスプレイはサポートしてる いま、こんな状況
651 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 22:29:32 ] 256はわかったから、640はどうなんだよ
652 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 23:49:00 ] >>650 だから、変更できないってなんだよ… 画面プロパティからは変更できないだろ、XPとか使ってれば。 ここはDirectXスレだっての
653 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 04:02:15 ] DirectXのスレで画面プロパティとかアホですか
654 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 04:37:37 ] >>652 だから、アプリの方でエラーがでちまって起動できないっての
655 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 06:30:42 ] 256はわかったから、640はどうなんだよ!
656 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 06:36:12 ] >>651 ,655 うるせー
657 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 07:03:44 ] どうなんだと聞いている 答えろ
658 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 07:31:58 ] 今日はここに沸いてるのか
659 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 10:06:09 ] 640×480は256色しかサポートしてないってメーカーPCも昔あったな まぁ結局の所解像度決め打ちにしてるなら動く解像度を動作環境内に書いておけってことだ。 Windowsなんてタダででもいろんな環境がありすぎるんだから全部テストなんて出来ん。 解像度くらいはプロパティから数値が見えるんだから環境限定でいいだろ。 グラボのDXサポート状況に比べればどうと言うことはない
660 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 10:08:28 ] フルスクリーンじゃなくて窓を開いて640×480の256色モードとかなら XPもサポートしてるよ Delphi Graphic Secretsという本を持っているんだがここでいろいろな 画面モードを実験している
661 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 22:20:22 ] LPD3DXSPRITE::DrawとLPDIRECT3DDEVICE9::DrawPrimitiveを両方使ってるのですが 前者より手前に後者を描画するにはどうすればいいですか? 描画の順番変えても必ずスプライトが前になってしまいます
662 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 22:23:07 ] Z
663 名前:661 mailto:sage [2008/05/31(土) 22:59:42 ] 解決しました 位置のZ座標指定してもうまく処理されないと思ったらClearするときにZバッファ指定してなかっただけでした。 スプライトのZ座標は描画順だけらしいので交錯させる等複雑な描画をしたい時は完全にDrawPrimitiveの方に統一するしかないですか?
664 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 15:22:51 ] SetRenderState( D3DRS_ZENABLE , FALSE ); 3DやらないならZバッファ使わんだろ 使ってもいいけど 使わん方が早いだろ ついでにステンシルバッファも作らなくていいし クリア時もZ消さなくていいし
665 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 20:16:47 ] >>664 Zテストの前から描画って2Dだとそんな効果ねぇっけ?
666 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 21:18:21 ] >>665 半透明や加算合成を一切使わず、抜き色で使うアルファ値も エッジにAA効果を持たせない二値限定のスプライトが前面に多く 描画されると仮定できる状況なら、大幅にフィルレートを稼げるかもね でなけりゃただの逆効果
667 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 01:02:57 ] >>666 α値が0%(不透過)のところだけZバッファだけ書き込んでなんとかならんかったっけ?
668 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 02:25:36 ] >>667 だからカラーキー目的で二値しかアルファ値使ってなけりゃ、アルファテストでいけるよ でもエッジにアンチェリ(段階的なアルファ値の適用)使った時点で駄目だし、 当然アルファブレンドも使えないしで、2Dスプライトの描画において深度バッファで 速度が稼げるってのは結構レアケースだと思うよ
669 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 03:29:40 ] >>668 α値が1のときだけ〜って処理いけんかったっけ? まあ、いけたとしてもそんなに早くないか・・・
670 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 09:54:29 ] かなり重いピクセルシェーダーを使わない限り深度バッファでの高速化って恩恵ないだろ
671 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 13:21:37 ] もしくは、点を打つのが激重なグラボ
672 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 19:07:07 ] 俺のディスプレイ 最低解像度800x600だった でも、640x480できたお
673 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 20:03:27 ] >>671 なんだその存在価値のなさげなグラボは
674 名前:デフォルトの名無しさん [2008/06/04(水) 00:19:51 ] 自分で定義した頂点情報をDrawPrimitiveで表示するときや、 読み込んだXファイルをDrawSubSet()で表示するときなどにmaterialを設定しても描画に反映されません D3DXCreateSphere()等で取得したメッシュをDrawSubSet()する場合は反映されます materialを有効にするにはSetMaterial()以外に何か設定が必要なのでしょうか?
675 名前:674 mailto:sage [2008/06/04(水) 01:53:23 ] すいません、自己解決しました D3DRS_DIFFUSEMATERIALSOURCEでマテリアルを参照するよう設定するのを忘れていました
676 名前:デフォルトの名無しさん [2008/06/04(水) 19:25:36 ] ビルドは上手くいくのに実行するとすぐに終了されてしまいます DirectX 9.0 SDK Update (Summer 2003) に変えてからこうなりました 以前はSummer 2004を使っていたのですが不具合が色々あったので変えました もしかしたらDirectXの設定がおかしいのかもしれませんわかる方いたら教えていただきたく思います
677 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 19:36:42 ] ブレークポイントしかけて、ステップ実行してみれば?
678 名前:676 mailto:sage [2008/06/04(水) 19:58:37 ] すみません BCC Developerを使っているのですがブレークポイントの設定の仕方がわかりません…
679 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:01:10 ] >>678 VC(正規OSならタダでダウンロード可能)にしてやってみるか printfをおきまくれ
680 名前:676 mailto:sage [2008/06/04(水) 20:10:01 ] VCは以前インストールしようとしたのですが 「サーバとの接続を再度確立します」と表示されてインストールできなかったのでやめました 自分で組んだプログラムではなく、サンプルをダウンロードして実行しようとしただけなのでコードに問題は無いと思います Summer 2004で実行したときは大丈夫でしたが Summer 2003に変えてからおかしくなりました おそらくDirectXの設定を間違えていると思うのですが…
681 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:14:09 ] なんだバージョンダウンかよ DX関数に必要なDLLがないんじゃね?
682 名前:676 mailto:sage [2008/06/04(水) 20:29:59 ] 診断ツールではsystem.dlがないとありましたが 調べてみるとそこまで必要なものではないようでした サンプルがSummer 2003を対称にしているのでDLLが足りないわけでもないと思います
683 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:34:51 ] >>680 IE7か割れOSだろ?
684 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:35:37 ] BCCはVCといろいろ違いがあるんで BCC対応のライブラリを作るなり取ってくるなり手間が必要だったような気がするが
685 名前:676 mailto:sage [2008/06/04(水) 20:38:01 ] firefoxですがIE6が入ってます OSはノートの正規品です もともと古いPCなのでグラボの性能が低いのが原因かもしれませんが Summer 2004で実行できたので…
686 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:57:38 ] >>685 いくつか関数の仕様が変わったもんがあったような気がするけどそこは直した? ビルド通らないと思うけど
687 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 21:01:17 ] 2004のサンプルを2003で動かそうとしてんだろ? 足りないもんとかあるんじゃね? 変なコントロールまわりなんかやけに9.0初版のときより豪勢になってるし バージョンダウンで動かそうとするのなんて時間の無駄じゃね?
688 名前:676 mailto:sage [2008/06/04(水) 21:06:24 ] ビルドは通ります エラーもありません サンプルは2003用のです 2004からコンパネでDirectXが設定できなくなっていたので 2003にしました
689 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 21:21:30 ] 最終奥義「クリーンインストール」
690 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 01:07:03 ] 実行してすぐに落ちてるんなら普通に戻り値調べたらなんか出てそうだけどな ちゃんとエラーチェックしてる?w
691 名前:デフォルトの名無しさん [2008/06/05(木) 01:33:17 ] CとC++ってどう違うの?
692 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 01:33:50 ] CのインクリメントがC++
693 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 02:47:21 ] サンプルは環境によって落ちるものは落ちる、市販のゲームとは違うよ サンプルの実行に拘る理由がよく分からない
694 名前:デフォルトの名無しさん [2008/06/05(木) 03:34:04 ] 質問です. MPEG-2を取り扱うアプリケーションを作成したいんですが. Directshow()で可能だとは思うんですが. マニュアルはありますか?
695 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 03:38:32 ] >>693 言ってることも割れ臭いし 目的もなく2003だしで正直胡散臭いよねw
696 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 04:39:25 ] >>694 英語で良いならWindows SDKのドキュメントにある 日本語ならDirectX9 SDKの古いドキュメントがまだMSからダウンロードできたはず 場所の検索は自分でやってネ
697 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 19:21:39 ] DirecctX SDK(Mar 2008)とVS2005を使っています。 使っている参考書は www.amazon.co.jp/dp/4839912475/ です。 この本ではDirectXのアプリケーションウイザードがVSに追加されているのですが、私の環境では追加されませんでした。 VS→SDKの順にインストールしました。 最近のバージョンだとDiretctXのアプリケーションウイザードは削除されたのでしょうか?
698 名前:676 mailto:sage [2008/06/05(木) 19:38:46 ] 2004 Summerにしたら実行できました 2003にしようと思ったのもコンパネから設定変えたかっただけなのでこのまま2004でいこうと思います DirectX勉強してるサイトのサンプルだったんで何とか実行したかったんです 原因はわかりませんでしたが色々とありがとうございました
699 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 19:47:21 ] >>697 結構前に廃止された たぶん2004年のどっか >>698 最近のは確かにコンパネに設定が追加されなくなったが DirectX UtilitiesのなかにDirectX Control Panelってものがあってだな 昔コンパネから設定できたことと同じことができるんだぜ?
700 名前:676 mailto:sage [2008/06/05(木) 19:55:53 ] >>699 教えていただきありがとうございます ただ、2004にはないようです 最新のはPCの性能的に難しそうなのでこのまま我慢することにします ちなみに5年くらい前のpentiumVです
701 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:15:42 ] シェーダーを使ってトゥーンシェード(逆引き500に載ってる方法)をやろうとしているのですが、 一部を除き真っ黒になってしまいます。 どういう時にこうなるのでしょうか?
702 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:35:18 ] ごめんオレエスパーじゃないし
703 名前:デフォルトの名無しさん [2008/06/05(木) 23:45:32 ] DirectPlayがサポート打ち切られたとかマジですか
704 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:56:33 ] DirectX SDKドキュメントのなんと1ページ目にDirectPlay is deprecatedの一文がッ!
705 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:00:11 ] 2007年6月あたりのSDKがサポートラスト。 ランタイムは当分のこるだろうけど。
706 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:18:28 ] 9cはもう終わりか? 10の時代なのか?
707 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:55:02 ] 9cの時代のままです
708 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 03:23:42 ] 10はVISTA限定という暴挙にMSが出たからね おかげで10の普及は相当に遅れるだろうね
709 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:22:26 ] XPみたいに皆にブーブー文句言われながら8年後位には普及してるよ
710 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:28:15 ] そう思っていた時期がMeにもありました
711 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:30:34 ] 細かいバージョンを見れば、MSは失敗作をけっこう出してるよ そしてすぐに無かったことにしている SEとかCEとか3.0とかMMCとか、NTとか Vistaもそんな感じ
712 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:34:44 ] そりゃXPよりブーブーいうだろ 基本的に全てのアプリはDirectXで組んでくださいっていうスタンスなんだから
713 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:38:04 ] __ ,...-‐:"´:.:.::.:.::.:.``:‐,,、 ,.-..,、/:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:`、 _ /:.:.:./:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:';;´::.:.l l:.:.:.:.:.l:.:.:.:.:.:.:.:.:.:/|:.:.:.:.:.:.:.:.::l、:.:.:.:.::.:.:.:.:l:.:.:.::| . |:.:.:.:.:l:.:.:.:.:.:.:.::.::/ |:.;:.:.:.:.:.:.;l:l l:.::l;:.:.:.:.:.:l:.:.:.:;l, |:.:.:.:.:.|:.:.:.:.:.::l:.:/ |:|.l:.:.:::.:.:l|l |:.:ll:.:.:::.::.ll:.:.:.::|i . |:.:.:.:.:l|:.:.:.::.::l.|/` 、|l l:.:::./l _,,.-l:j´l:.:.:.:.:| l:.:.:.:lii l:.:.:.::.:l i/l:.:.:l |l‐ェ-ュ,` l:://´ェ--,-,.l:.:.:lヽ l:.:.::.l.ii . l:.:.:.:.:;l l (l:.:.:.lヽゝ_ノ '" ゝ_ノノ.l:.::l,l l .|;:.:.:.l.ij l:.:.:.::.lij `ゞ::.:l ,、, ∧/l:.:.l/ j|:.:.:.:l.ii . |:.:.:.:.:|.ii ';:.:l、 ' . ,l::/ l.l:.:.:.l.i| . |:.:.::;.;| ii ヾl >、. 0 , イl:/、 | |:.:.:.l li . |:.:.:.|i| ji,.-ィ'´l `l ` ‐-‐ '´ l l``l‐-l、|:.:.:.l ij |:.:.:.:|i|'´/ l ヽ `、 / / l .l |:.:.:.| i| すとーっぷ。>>712 は素早く変な空気を作るねぇ… >>709 より不安な子を見つけたよ。
714 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 02:02:40 ] DX9、C++でのテクスチャに関する質問です。 テクスチャのクラス(CTexture)を作り、コンストラクタに画像ファイルのパスを渡してクラス内でテクスチャ(Texture)を生成しています。 CTextureのデストラクタでTextureを削除するようにし(delete Texture)、メモリの解放を試みているのですが その状態でCTexture* で作ったオブジェクトを削除すると、ヒープが壊れているというエラーが出ます。 多重deleteでエラーが出ることは調べてわかったのですが、 if(Texture) delete Texture; としているにも関わらずエラーが出るので困っています。 どのようにしてテクスチャが占有したメモリを解放すればよいのでしょうか?
715 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 02:18:42 ] >>714 見事にスレ違いだ。 そして君のやりたいことは多分こうだ。 if (Texture) { delete Texture; Texture = NULL; }
716 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 02:40:27 ] >>715 できました、ありがとうございます!!そしてごめんなさいでしたァ!!
717 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 05:40:52 ] delete Texture; Texture = NULL; これでおk delete NULL;は合法 ま、どのみちスレチ
718 名前:デフォルトの名無しさん [2008/06/07(土) 12:22:05 ] www.h2.dion.ne.jp/~takusoft/directx8/d3d/chapter1/sec07/d3d_07.html のサンプルプログラムを参考にお勉強しているのですが 画面の頂点情報を動的に変えるために 頂点バッファを確保する箇所 VOID* pVertices; if( FAILED( g_pVB->Lock( 0, sizeof(g_Vertices), (BYTE**)&pVertices, 0 ) ) ) return E_FAIL; memcpy( pVertices, g_Vertices, sizeof(g_Vertices) ); g_pVB->Unlock(); を処理で何回も経由させる場合 以前に確保したメモリはどのように解放してあげれば良いのでしょうか? よろしくお願い致します。
719 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 12:33:41 ] 確保も何もそれはロックしてるだけだと思うが・・・。 あと頻繁にロックするならDYNAMICで作ってDISCARDでロックしろ
720 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 12:53:13 ] なるほど、メモリのロックという概念をよく分かってませんでした 動的に確保してるわけでは無いんですね 同じところに何度も上書きしてる感じなのかな? DYNAMIC と DISCARD は調べてみます ありがとうございました
721 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 14:07:06 ] Direct3DのX-ファイルとテクスチャに関しての質問なんですが。 Xファイルのモデルを作って、それにプログラムでテクスチャ座標を設定して一つのアイテムを作成するのではなく。 モデリングソフトでモデルを作ってる段階で、視覚的にテクスチャを設定して、その情報が入ったXファイルとテクスチャを読みこませて テクスチャ座標をいちいち設定しなくてもアイテムを表示させたりって出来ないんですかね? なんだか大体の本はモデルの読み込みと表示は説明してても、モデルの作成からテクスチャの設定部分が余り説明されてないので分かり辛い… DirectXで使うことを前提とした3Dの本とかってないですかね? 長々と読み辛い文章スマソ。
722 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 15:58:36 ] メタセコイアとかで普通にやればそうなると思うんだけど
723 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 16:02:06 ] >>721 キミが求めている情報を知りたいのならプログラムの本ではなくデザインの本を買うべきだよ。 DirectXだのOpenGLだと自前レンダラーだの関係なくそれはグラフィックデータの話だ。
724 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 16:28:31 ] >>721 普通にモデリングソフト触ればわかるだろが ちなみにXファイルの中にマテリアルってもんがあって そのなかにたくさんテクスチャ設定できるようになってるじゃん 構造でいうと Xファイルx1 メッシュxN マテリアルx1 テクスチャx1 モデルのUVx1 な感じになってるのか?(バンプ(マルチテクスチャ2枚以上考慮外)とか考えないと) Xファイル1つにメッシュがたくさんあって メッシュ1つにつきマテリアルとUVが1つずつあって マテリアル1つにつきテクスチャが1つあると・・・ だから、Xファイル1つにテクスチャは複数ある構造がいまのXファイルなわけよ
725 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 16:38:42 ] メッシュに対するマテリアルの数に制限はないぞ
726 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 16:45:35 ] >>725 そうだっけ? あーでもそうなってる気もするな でも実用性なくね? どの頂点がどのマテリアルか決定しなきゃいけないから 読み込むときにマテリアル単位でメッシュわけなきゃいけないな この辺はモデリングソフト次第って感じ?
727 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 17:12:08 ] モデリングの段階でテクスチャやマテリアル毎に わざわざメッシュを分けて作る方が現実的じゃないだろ。 実際D3DXMeshでも属性テーブルって形式でマテリアル毎に分割して描画するようになってる。
728 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 17:25:37 ] XFileに組み込んだマテリアルやテクスチャって1回XFileから読み込んで デバイスにセットする方法しかないの?
729 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 18:27:13 ] デバイスにセットしないでどうやってレンダリングするのかと
730 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 18:50:41 ] >>727 メッシュ1つのマテリアル毎にテクスチャが違うって状況か? あんまり違いがないならメッシュ1つに付きテクスチャ1枚な 俺の経験だとそんなモデルは重過ぎて動かねぇ まあ、いまソースみたら俺もできるように組んであるけどなw スキンメッシュでかなり苦労してた記述がみられるw スキンメッシュのデータはマテリアルごと描画できるデータになってねぇのなw 抜けてんだな>Xファイルの担当者
731 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 19:00:24 ] >>730 何を言ってるかわからねえがスキンメッシュだろうなかろうが同じように描画できるが・・・。 顔の表情とかをテクスチャ差し替えでやろうと思ったら顔だけテクスチャ別にするだろjk
732 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 19:31:24 ] >>731 ボーンと頂点を結びつけるインデックスがそうはなってないと思ったが >>731 メッシュで分けちゃってるな俺んとこのデザイナさん もちろんプログラムではなんでもできるようにしてあるが
733 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 20:42:08 ] >>731 インデックスとマテリアルは関係ないじゃろ。 最終的にはポリゴン1つ1つにマテリアルのインデックスが振られているんだから それを使ってマテリアル毎に分解して再構成するだけ。 っていうかD3DXで読み込めば全部やってくれるけんど。
734 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 20:42:37 ] >>733 >>731 じゃねえ>>732 だ。
735 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 21:14:17 ] >>733 >それを使ってマテリアル毎に分解して再構成するだけ この作業が面倒臭いって話だな インデックスがメッシュごとだから、自前で読み込むときは 1回マテリアルごとに直す必要があるな
736 名前:デフォルトの名無しさん [2008/06/07(土) 22:22:43 ] DirectX End-User Runtime Web Installer ttp://www.microsoft.com/downloads/details.aspx?FamilyID=2da43d38-db71-4c1b-bc6a-9b6652cd92a3&DisplayLang=en DirectX End-User Runtimes (June 2008) ttp://www.microsoft.com/downloads/details.aspx?FamilyID=822640ab-0983-4c41-9c70-632f6f42c557&DisplayLang=en DirectX Software Development Kit ttp://www.microsoft.com/downloads/details.aspx?FamilyID=519aae99-b701-4ca1-8495-39ddde9d7030&DisplayLang=en
737 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 22:52:14 ] >>736 そんなの貼っても割れ厨にはどうせ見れないぞw
738 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 22:54:40 ] ?
739 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 22:59:26 ] ああ、そういう事か。 犯罪者の都合は考慮しないよ。
740 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 23:07:03 ] >>738 ランタイムのウェブインストーラーや開発キット、ヘルプなんかは ウィンドウズの正規OSでないと落とせなくなった なのでたまにこのスレで「落とせません」とか「見れません」とか 「わかりません」とかいう奴はほぼすべて割れ厨
741 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 23:11:28 ] PC買えばOS付いてくるのに割れ厨って意外と多いのな
742 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 04:24:44 ] オンラインゲームをやってるんですが directxを前のverに戻したらパフォーマンスって下がりますか?
743 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 04:51:37 ] あ
744 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 15:05:13 ] 安全に Release メソッドを呼ぶマクロとして SAFE_RELEASE のようなものを見かけますが、 // safe release #define RELEASE(p) ( (p) ? ( (p)->Release(), (p)=NULL ) : (0) ) このマクロで何か問題ありますか? 参照を使った関数だと BCC に注意されたので
745 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 16:17:37 ] >>744 翻訳しないで原文ママのエラーメッセージを。
746 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 17:35:36 ] DirectShowを使ってGUIのメディアプレイヤーを作っているのですが、 IMediaSeeking::GetDurationで再生時間を取得すると、 3分33秒より長いファイルはオーバーフローして負の値になってしまいます。 IMediaPosition::get_Durationで取得しようとすると、E_NOTIMPL(実装されていない)が帰ってきます。 3分33秒より長いファイルの再生時間を取得するにはどうすればいいのでしょうか? 開発環境はVisual Studio 2005 Pro、言語はCです。
747 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 17:37:54 ] 最小のコードくらい出せカス
748 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 17:38:00 ] CComPtr使いなさい
749 名前:746 mailto:sage [2008/06/08(日) 17:49:53 ] >>747 IGraphBuilder *pGraph; IMediaControl *pMediaControl; IMediaSeeking *pSeek; IMediaPosition *pMediaPosition; REFTIME length; REFERENCE_TIME TotalTime; CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC, IID_IGraphBuilder, (void **)&pGraph); pGraph->QueryInterface(IID_IMediaControl, (void **)&pMediaControl); pGraph->QueryInterface(IID_IMediaSeeking, (void **)&pSeek); pGraph->QueryInterface(IID_IMediaPosition, (void **)&pMediaPosition); pGraph->RenderFile(FileName, NULL); pMediaPosition->get_Duration(&length); pSeek->GetDuration(&TotalTime); こんな感じです。
750 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 20:43:53 ] REFERENCE_TIME は普通に使ってる分にはオーバーフローしないが どこかで int にキャストされてるんじゃね SetTimeFormat 指定しておいたほうがいいんじゃねえ
751 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 23:34:30 ] DirectMusicを最近扱っているのですが、 GetGlobalParam(GUID_PerfMasterVolume, reinterpret_cast<void*>(&V), sizeof(V))で 何故かE_INVALIDARGが返ってきて音量の取得ができません。 不正な引数とありますが、どれが不正な引数なのでしょうか?(Vはlong型です) ちなみに、この処理を行う前にパフォーマンスの作成、パフォーマンスとシンセサイザーの初期化、 ローダーの作成を行っています。
752 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 23:41:48 ] >>751 msdnによると以下のようにあるけど、SetGlobalParamは使用済み? >SetGlobalParam が rguidType について一度も呼び出されたことがない場合、このパフォーマンスが現在処理している >グローバル データ リストの中に、rguidType がない可能性がある。その場合、このメソッドは E_INVALIDARG を返す。 >つまり、どのパラメータにも、GetGlobalParam を使って取得できるデフォルト値があると想定しないこと。
753 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 23:47:46 ] 質問です ttp://richa850.hp.infoseek.co.jp/programming/dx9_01.html ここを参考に、後述のプログラムを書いたのですが、少なくともRADEON9600SEで画面がおかしくなります。 正しい方法はどうやればいいのでしょうか? ・APIリファレンスを読んだところ、MultiSampleTypeなどは以前のものと一緒でなければならないとあったので、上記ページでは決め撃ちになっているのを修正しました ・画面がおかしくなるを具体的に言うと、テクスチャが壊れていたり(正しいテクスチャの一部が緑や白のペンキでラクガキでもされたように塗りつぶされてる)、まったく描画されなかったりです ・old.Widthが中途半端な値(672とか)だったりすると、OSごと巻き込んで落ちます。(PC再起動がかかります) ・ D3DSURFACE_DESC old; CComPtr< IDirect3DSurface9 > pCurrentDepthStencil; pDev->GetDepthStencilSurface(&pCurrentDepthStencil); pCurrentDepthStencil->GetDesc(&old); // 新しく作ったテクスチャーの大きさと、現在の深度ステンシルの大きさを比較. if ((old.Width < descNewTexture.Width) || (old.Height < descNewTexture.Height)) { // 深度ステンシルを作り直す。 CComPtr< IDirect3DSurface9 > pNewDepthStencil; pDev->CreateDepthStencilSurface ( __max(descNewTexture.Width, old.Width), __max(descNewTexture.Height, old.Height), old.Format, old.MultiSampleType, old.MultiSampleQuality, TRUE, &pNewDepthStencil, NULL ); pDev->SetDepthStencilSurface(pNewDepthStencil); } // 上記を行なっただけではまだ問題はおこらず、下記を行なうと発症します。 // 上記だけ、もしくは下記だけだと問題はおきません。 pDev->GetSwapChain(0, &pSwapChain) pSwapChain->GetBackBuffer(0, D3DBACKBUFFER_TYPE_MONO, &pRenderTarget); pDev->SetRenderTarget(0, pRenderTarget);
754 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 23:56:19 ] >>752 ありがとうございます、使用しておりませんでしたorz デフォルト値がないのですね、なぜこんな仕様になっているのやら…orz
755 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 08:10:40 ] 変数でも何でもとりあえず初期化しやがれとしか言い様が無い
756 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:45:36 ] Ver9あたりからボタンとかテキストボックスのような コントロールのようなものが使えるようになってるみたいなんだが あれってなんて名前でしょうか? 使い方書いてあるHP検索したいわけだが なんて検索したらいいかわからんのです
757 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 01:16:45 ] DXUT
758 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 19:35:52 ] dxutに未来はあるのでしょうか?
759 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 19:50:35 ] モデルの、パーツだけ別のモデルに差し替えることって なんという言葉でしたっけ
760 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 09:36:07 ] void PartsDakeSashikae_to_OtherModel(void) { return; }
761 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 11:24:56 ] #define PDtoOM PartsDakeSashikae_to_OtherModel PDtoOM();
762 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 14:05:08 ] >>760-761 面白いと思ってやってるのか?
763 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 16:35:41 ] 自前の画像を使ってボタンを作るとき、レスポンス(押しっぱなし) の頻度をループ数とタイマーのどちらで制御すべきだと思いますか?
764 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 16:48:27 ] タイマー ループにして何か良いこと有るの?
765 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 17:38:24 ] ループだとFPSに依存するから怖いよ
766 名前:763 mailto:sage [2008/06/14(土) 03:46:37 ] thx やっぱりそうなんだ。 処理落ちすることって前提なのね。
767 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 04:33:41 ] メッセージで処理しろよ。つーかwinプログラミング覚えろよ。
768 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 10:52:37 ] 軽いゲームならfps依存でかまわんと思うよ。 ただ、その処理をカウンタで実装したところで タイマーと比べて簡単になるとは思わんが。
769 名前:767 mailto:sage [2008/06/14(土) 20:46:38 ] >>767 プロシージャのタイマーより クラス内でtimeGetTime()使ったほうがいいだろ?
770 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 20:56:25 ] 変な人がおる・・・
771 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:19:24 ] IDirect3DBaseTexture9から画像サイズって取れますか? IDirect3DTexture9じゃないです
772 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:41:00 ] 取れないよ。 取れないけど・・・どういう状況でその要求が出てくるんだ? まともな設計してりゃありえないと思うんだが。
773 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:01:16 ] シェーダークラスで GetTextureで0のテクスチャの幅と高さを シェーダーに渡したかったのです。 Textureは、普通のテクスチャだったり、RENDER_TARGETだったりするし、 サイズを別に持たせたくなかった(メモリけちった)のです 無理っぽいので、別個に渡すようにします。
774 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:24:40 ] あぁ、GetTextureからという話ならIDirect3DResource9::GetTypeで判別して 各継承クラスにキャストすりゃいいだけだよ。
775 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:44:20 ] 普通のテクスチャもRENDER_TARGETも同じIDirect3DTexture9だとおもうけんど
776 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:35:37 ] ボ、ボリュームテクスチャも作るつもりだもん
777 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:44:20 ] お前かわいいな ちょっとこっち来いよ
778 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:26:38 ] LPDIRECT3DDEVICE9から ライトのポジションは、GetLightから取れるのですが、 カメラのポジション取得は、できるのでしょうか? 無理ですか?
779 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:23:47 ] カメラのポジションも当然取得できる。 つか出来ないわけねーだろ。
780 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:08:03 ] カメラの「位置じゃなくビュー行列が取れるだけだから そっからカメラの位置は計算しないといかんけどな
781 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:16:51 ] 」
782 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 03:55:17 ] やっぱ、シェーダでカメラの位置が必要になるので カメラ行列生成情報は、グローバルで持っておくべき? あと、ビルボード行列も
783 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 04:27:29 ] >>782 同じことで悩んでる人発見 カメラのクラスってどこに配置すればいいんでしょうね
784 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 10:01:29 ] カメラを管理するクラスをワールドを管理するクラスが持つだろJK
785 名前:デフォルトの名無しさん [2008/06/19(木) 13:49:00 ] カメラはワールドに複数配置できて、 アクティブな奴を切り替え出来るように作っておくとデバッグにも便利
786 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 15:43:47 ] その発想は無かった
787 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 18:54:51 ] >>786 素人乙
788 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 00:22:34 ] いろいろ3Dツールを使って試しているのですが 分からないことがあるので質問です。 例えばメタセコイアでpng形式のアルファ付きテクスチャをポリゴンに張ると レンダリング結果はテクスチャの透明部分はポリゴンも透明になりますが xファイルに出力してビューワで見ると透明部分は白色表示になってしまいます これはxファイルにはテクスチャのアルファは無視(白と認識)されるという事なのでしょうか?
789 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 00:32:36 ] 1) メタセコにおいて、テクスチャマップとアルファマップの両方を指定している場合、 xファイルはマルチテクスチャをサポートしていないので、xファイルに保存した段階で アルファマップの情報は失われる。 2) そのビューワ(何のビューワか知らんが)がテクスチャのアルファ値を無視しているだけ。
790 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 01:07:04 ] >>789 1に関してはテクスチャは1枚しか使用していません。 メタセコイアの材質設定で「模様」のテクスチャにアルファ付きのpng画像を指定した場合と 材質設定の「透明」に白黒のbmp画像を指定した場合の両方を試しましたが どちらもメタセコイア上で透明に見えていた部分はxファイルで白になっていました。 2に関してはSDK付属のMeshViewerを使って見ていました。 一応自作のプログラム上でも表示を試しましたが ビューワと同様でアルファの影響は見られませんでした (DirectX初心者な自分が作ったプログラムなので それ自体にアルファに関する抜けがある可能性もありますが) 透過効果を使ったxファイルのサンプルでもあればいいのですが 現状では表示するプログラム側に誤りがあるのか 3Dツール側の設定が足りてないのか分からずなんとも・・・
791 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 01:22:24 ] PNGのアルファってかなり怪しかった気がするんだけど。 素直にDDSを使う方がいいと思われ。
792 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 01:29:36 ] 失敗しているとしたら、テクスチャの読み込み段階でアルファ値をわざわざ削ってしまっているか、 レンダーステートおよびテクスチャステージステートの設定が適切でないか、だ。 後者の方が圧倒的に多いパターンなんだけど、 このへん実はピクセルシェーダ使った方が余程わかりやすかったりするんだよねぇ。
793 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 03:02:14 ] >>785 おまえ頭いいな
794 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 03:09:58 ] なんだかんだで DirectGraphicsのほとんどの要素をラッピングしたクラスが必要なんですね。 たいへんですね
795 名前:790 mailto:sage [2008/06/20(金) 08:34:24 ] >>791 DDS形式使っても無理でした(つД`) >>792 レンダーステートとテクスチャステージステートは 特に設定していなかったので、レンダーステートに D3DRS_ALPHABLENDENABLE設定してみたのですが 結果は変わらず。 テクスチャステージステートはデフォルトでイイと思うのですが この辺の設定も自信無いので違ってたらご指摘お願いします orz ちなみに使用してるSDKのバージョンは2004/Oct
796 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 09:31:11 ] >>795 半透明描画はSRCBLENDとDSTBLENDの設定とCOLOR_OPの設定もちゃんとやらないと話が始まらないぞ。
797 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 09:40:18 ] >>795 まずはテクスチャのα値をちゃんと参照する方法を覚えろ。 しかしコンパイル済みMeshViewはテクスチャのα値無視するのは確かに不適切だよな ソース入ってるから自分でリコンパイルすりゃいいんだけど、メニューでON/OFFくらいつけといてほしかったわw
798 名前:790 mailto:sage [2008/06/20(金) 10:18:37 ] >>796 ,797 d、やっと出来ました!ヽ(`Д´)ノ pD3DDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA ); pD3DDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA ); この二行が抜けてました、ってか D3DRS_SRCBLENDALPHAとD3DRS_DESTBLENDALPHAの定数と勘違いして使って混乱してました(つД`)ゴメンナサイ テクスチャステージステートはとりあえずデフォルトでも大丈夫でした。 それにしてもMeshViewerはα反映しないんですね お陰でデータの方に問題があるのかと勘違いして無駄な時間を・・・orz
799 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 13:04:01 ] 今さっき、テクスチャのαを適用するようにしたMeshViewを作ったわ 2008だとそのままじゃコンパイル通らなくて、いろいろめんどかった てか、存在しないヘッダファイルをincludeするなよサンプルなのにって思った
800 名前:790 mailto:sage [2008/06/20(金) 20:58:27 ] 昼に解決したと思って放置してたものを弄ってて 背景透けたと思ってたら、バックグラウンド(クリア色)は 透明ポリゴン越しに透けて見えたけどすぐ後ろに別ポリゴン置いたら そのポリゴン無視してバックグラウンドの色が表示されてることに気づいた・・・orz
801 名前:790 mailto:sage [2008/06/20(金) 22:44:21 ] ぁぁ・・・Zバッファ有効にしてたら透過が上手くいかず Zバッファ無効にすると前後関係を自動処理してくれないから 自前で描画順序を制御しなけりゃいけないって事かな(;´-`)
802 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 22:45:39 ] 半透明 Zバッファ でぐぐりまくりんぐ
803 名前:790 mailto:sage [2008/06/20(金) 22:52:38 ] つい先ほどからぐぐりまくりんぐです。 初歩の初歩みたいな疑問をグダグダ書き連ねて申し訳なさ爆発です。
804 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 22:55:09 ] 昨今の事情を鑑みるからには、半透明でモデルを書くな。 使うなら見た目は諦めるか深度ピーリングでもしろ。 頂点処理なんてアホほど浮いてるんだしアルファで抜くより全部 ポリゴンのほうが圧倒的に最近の主流だったりはする。
805 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 23:01:57 ] あおりじゃなく、深度ピーリングってなんのことだ? あと、「半」透明じゃなくて、アルファ値を使った「透過」がやりたいだけなら、アルファテスト使えばよくね?
806 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 23:04:45 ] >>804 頂点処理が浮いてるっていうのは、 大抵の場合ピクセルシェーダが忙しくて、頂点シェーダが遊んでるってことですか? どうやったらコアの稼働率?を調べることが出来るんでしょうか?
807 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 23:09:24 ] >>806 まだそんなことを気にするレベルに至って無い 順番にやっていけ 半透明とZバッファの相性の悪さは昔からの命題 一般的には半透明の描画だけリストに登録しておいて、完全不透明の描画が全て終わった後、カメラから遠い順に描画していく std::multimap<float, IAlphaDraw*> でリストつくると楽だよ floatがカメラからの距離 IAlphaDrawは半透明描画の描画インターフェースを提供するインターフェースクラス
808 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 23:16:35 ] >>806 NV PerfHUD
809 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 00:41:46 ] なんか2度書きってなかったっけ?
810 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 00:43:03 ] 不透過の物体を描画するときはZバッファをONにしてカメラに近いほうから描いていくと速いぞ
811 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 00:53:12 ] エフェクトやパーティクルなんかは別として、 モデル自体の半透明処理はかなりの例外扱いだからなぁ。 被写界深度やモーションブラーなんかもやれないし 特殊な条件以外で使うようなものじゃない。
812 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 07:11:37 ] 2Dゲーでかなりの枚数を重ねようとしてるなら 正直、PCのグラボではフィルレートがまったく足りてないと思う
813 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 09:28:27 ] 3Dでもハイレゾで普通にバンプ、スペキュラ、シャドウとかやってると 普通にピクセルシェーダーカツカツになるよ。 逆に頂点は数百万クラスになってきてるけど、今は統合型アーキテクチャが主流だしどうなることやら。
814 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 09:56:02 ] うんうん頂点シェーダはなにやっても落ちないわ でもピクセルシェーダはα物をちょっと拡大して表示するだけでもう処理落ちはじめやがんの これってなんで? PS2とかだとそんなことなかった気がすんだけっちょ
815 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 10:02:18 ] PS2はフィルレートバカじゃん。 使うテクスチャも16色や256色のパレットが殆どだし。 そもそも解像度も640x480より小さいしなー。
816 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 10:14:13 ] 頂点毎に呼ばれるVSと違ってPSはピクセル毎に呼んでるはずだから 解像度あげたらエライ負担になるだろ
817 名前:デフォルトの名無しさん [2008/06/21(土) 11:29:23 ] DirectXについて料金のことですが これって無料でダウンロードできるんですか?
818 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 11:48:48 ] いいえ。MicrosoftとNDA契約を結んだあと 利用目的に応じたライセンス料を支払う必要がありますん。
819 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 11:55:28 ] 初心者質問スレなんだから意地悪しないでググレカスでいいじゃないか・・・
820 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 12:13:01 ] ダウンロードセンター行けば無料か有料化は一瞬で分かるだろ
821 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 13:48:25 ] やべ、俺NDAのサインしてねぇ。 あれ、誰かきた。
822 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 13:51:09 ] DrawPrimitiveを使った描画で消失点を画面中央以外にするにはどうすればいいですか?
823 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 13:54:02 ] >>822 Projection 行列をいじる
824 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 14:28:40 ] >>823 即レスありがとうございます。 色々調べてみたのですがよくわかりません。 D3DXMatrixPerspectiveFovLHの他に座標変換するのですか?
825 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 14:31:09 ] >>824 D3DXMatrixPerspectiveOffCenterLHとか使うといい。
826 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 15:19:14 ] >>825 できました。ありがとうございました。
827 名前:デフォルトの名無しさん [2008/06/21(土) 18:38:44 ] boost::intrusive_ptr<IDirect3DVertexBuffer9> spVB; とVBを確保したのですが、 pd3dDevice->CreateVertexBuffer(sizeof(D3DTLVERTEX)*4, 0, D3DFVF_2DVERTEX, D3DPOOL_DEFAULT, m_pVB.get(), NULL ); と、作るときにダブルポインタに出来ません・・・ IDirect3DVertexBuffer9* buf=spVB.get(); pd3dDevice->CreateVertexBuffer(sizeof(D3DTLVERTEX)*4, 0, D3DFVF_2DVERTEX, D3DPOOL_DEFAULT, &buf, NULL ); と渡す以外の方法で良い方法ありませんか? intrusive_ptrを使うのが悪いのだろうか・・・
828 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 18:44:15 ] CComPtr使えよ
829 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 18:50:29 ] >>828 ありがとうございます。 DXUTを使ってるので、 atlbase.hをインクルードするときに Need to include strsafe.h after tchar.h って言われるのでIntrusiveに逃げようかと思ったんですが、 やはりDXUT.hの中に入れ込んででもCComPtrのほうが良いのでしょうか。。
830 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 19:12:50 ] その程度のリソースは余計な事せずにそのまま管理すりゃいいだろ・・・
831 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 19:19:23 ] >>827 &(spVB.get())じゃダメなのか?
832 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 19:38:10 ] >>829 何を嫌がってるのか理解できんが、だったらintrusive_ptrをそのまんまぱくって T** ptr_ptr() { return &px_; } みたいなのを付け足したのを自前でこしらえたらいいじゃん。 >>831 こらこらw
833 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 19:44:39 ] >>830-832 ありがとうございます。 やはり普通にCComPtrを使うことにしました。 >>832 の意見は大変参考になりました。 ありがとうございました。
834 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 19:52:30 ] >>827 CreateVertexBufferに渡すのは素のIDirect3DVertexBuffer9*で、 それを使ってintrusive_ptrを初期化すればいいかと。
835 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 20:51:57 ] >>829 その警告だったら、DXUT.hの中でATLのヘッダ読み込めば出ないけどね。 ATL使うのがデフォなら、DXUT.hに追加してプリコンパイル済みヘッダと 使用するのもありだと思うけど。
836 名前:835 mailto:sage [2008/06/21(土) 21:00:56 ] ああ、すまん。上のレス読んでなかった。 DXUT.hの中で読み込めばいいのは知ってたのか。 typoしたんだが直すまでもないな。
837 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 21:21:45 ] >>833 CComPtrはかなり独立したテンプレートクラスだから、コピペでパクるのもいいぜ? ってか俺はそうしてる。 なぜならVS2008にはatlbase.hが入ってないからだ;;
838 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 00:05:48 ] スマートポインタって不必要になったら自動で削除っていうけど 不必要になったときっていつなんだ? スタティックで参照されると一生消えないんだろうか?もしかして
839 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 00:08:19 ] 俺はデータを管理するクラス経由でアクセスするようにしてるから vector、list、set、map、stringくらいしか使ってないな・・・。
840 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 00:09:51 ] >>839 setとmapってどういうときに使うの?
841 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 00:26:04 ] >>838 参照がなくなった時だろ。
842 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 00:57:07 ] >>838 普通はプログラムの終了時だと思うぞ
843 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 02:27:49 ] >>840 mapは外部ファイルから読み込みするリソース(シェーダー、テクスチャ、モデル)なんかを 二重に読まないようにファイル名をキーにインターフェイス突っ込んどいて参照カウンタで管理に。 multimapとかmultisetなんかはパーティクルとかの挿入ソート代わりに。
844 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 07:02:25 ] >>837 入ってないのExpress Editionだけだろ
845 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 10:15:19 ] しかも2008に限らず無料版でATLが入っていたことなどないはず・・・・あ、2003(コンパイラのみ提供)はATLありだったっけ?
846 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 11:05:11 ] >>842 じゃあ、うっかりスタティックで参照しやがった馬鹿が開発チームにいたら デフォでリークし続けるってこと? 参照あってもこっちが削除したいっていったら強制的に削除してほしいときは どうしたらいいだろうか?
847 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 11:14:10 ] 参照があるのに削除したらスマートポインタの意味がないじゃん。
848 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 11:18:44 ] プライオリティ設定できないの? 優先度高の奴が残ってるときだけ参照あったら削除しないで 優先度低の奴は残ってても強制執行・・・みたいな
849 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 11:44:55 ] weak_ptrみたいなの?
850 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 12:17:08 ] >>846 言ってることがよく分からんが その「スタティックな参照」を行ってるスコープから出れば解放されるんじゃないの 一番大きいスコープ=プログラム(プロセス) スコープから出る=プログラムの終了
851 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 12:52:04 ] >>850 スコープから出る時にデストラクタが呼ばれるならそれはLocal変数であってStatic変数ではない罠。
852 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 14:54:23 ] >>851 スコープは例えただけで、関数内スタティック変数が関数抜けると 解放されるとかそういう意味で言ったんじゃないんだ 分かりづらい例えですまんかった 「プログラム終了時に消えると思う」に対して「スタティック参照したらリークするんじゃ」 って話だったから終了時に消えるって事を押したんだが 関数内スタティックが関数抜けても消えないっていうのを問題にしているのかね>>846 は
853 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 16:32:05 ] >>846 参照カウンタの概念は理解してるか? それとグローバルスコープ(プログラム終了)を抜ける時に グローバル変数やスタティック変数のデストラクタが呼び出されて 解放されることも。
854 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 17:30:45 ] その辺りは実際に書いて試してみたほうが早いよね
855 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 18:06:10 ] 要はバッサリ削除したいのに 使いもしないスタティック参照がインスタンスを消させなくしているから どーでもいいような優先度の参照に関してはつかんでても無視して強制的に削除したいということだよ
856 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 18:57:20 ] 普通に管理クラスつくって自分でマネージメントした方がいいと思うけど。 DirectX関係のインターフェイスは余計な事しないでシンプルに扱ったほうがいい。
857 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 20:19:39 ] >>855 weak_ptr
858 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 23:01:47 ] そもそも使いもしないスタティック参照がいて かつ参照がいるのに強制削除って状況がおかしいよ。
859 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 00:03:08 ] 確かに・・・リソースの強制削除なんて特異な状況聞いたことないな。 単にまともな管理が出来ていないだけにしか聞こえないな。
860 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 01:48:29 ] >>858 シーンを何回も呼ぶ(ロードアンロードを繰り返す)んだけど そのうちの1シーンがスタティックでポインタを保持してるところが多いのよ いらなくなったらそのシーンは破棄するんだけどプログラム自体はスタティック参照だから 残るのよこれが 範囲が広すぎて修正不可能だからどうすんべーって感じなわけ
861 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 04:37:39 ] staticにした時点で間違ってると言うことだNE
862 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 09:51:22 ] シーンが破棄されるときに、デストラクタから開放するべきなんじゃ? てか破棄されうるシーンがスタティックなポインタを持ってるっておかしくね?
863 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 11:17:03 ] >>846 のレスからすると何か変な勘違いを前提にして、 強制削除とやらをしなければならないと思っているような気がするが。 >>838 からの流れなんだろうけど、その後の他の人のレスと 話が噛み合っていない。 そもそも、リソースの管理に問題ありというのには同意。
864 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 13:04:07 ] スタティック参照って言葉でややこしくなってる気が
865 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 16:01:33 ] オンボードビデオカードだと CreateDeviceでD3DCREATE_HARDWARE_VERTEXPROCESSINGが失敗すると思ってよいのでしょうか? また、ビデオカードを使ってる環境でオンボードでも動作するように開発するには D3DCREATE_SOFTWARE_VERTEXPROCESSINGで初期化を行えばあとはCPU速度次第ということになるのでしょうか?
866 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 16:21:38 ] >>865 少なくともここ1年以内のIntel製オンボードは D3DCREATE_HARDWARE_VERTEXPROCESSINGでも通るぞ 恐らくだが3年前の物でも通ると思う
867 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 16:53:54 ] >>866 ありがとうございます 自分の環境が945Gなのですが駄目でした この環境で動作させるには、頂点数やライティングに気をつければよいのでしょうか?
868 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 17:59:50 ] >>867 頂点数とライティング、あとはVRAMを食いすぎないようにすれば十分な速度は保てると思う。 オンボードグラボは基本的にメインメモリからVRAMを取るから十分にメモリを積んでない システムでVRAM食いすぎると酷いことになる。 でかいテクスチャを何枚も使ったりしないで簡単な3Dエフェクト程度の利用だったら 特に問題なく動くんじゃないかな。
869 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:10:48 ] intelGMAは未だにピクセルシェーダはサポートするけど 頂点シェーダはサポートしない(HW頂点処理ができない)んじゃなかったっけ
870 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:21:24 ] ピクセルシェーダー/バーテックスシェーダー2.0に対応していない グラフィックボードって何年前ぐらいの物ですか?
871 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:28:07 ] GeForce3とかRadeon8500とかだな
872 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 12:26:00 ] >>869 X3000以降は使えるみたい en.wikipedia.org/wiki/Intel_GMA#Table_of_GMA_graphics_cores_and_chipsets
873 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 15:23:12 ] この前GF5200FXで動かしたら、ピクセルシェーダ2.0に対応してるのはいいけど物凄い遅さでびっくりした (PS処理省いたらめちゃくちゃ軽くなった)
874 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 20:02:31 ] D3D10でD3D9のD3DPERF_BeginEventに相当するものってありますか?
875 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 17:12:50 ] bmp形式の画像ファイルを背景色の代わりに表示させることってできますか?
876 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 17:15:34 ] >>875 スプライトなり何なり使って画像を描画 ↓ Zバッファだけクリア 後はお好きなようにどうぞ
877 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 17:26:45 ] >>876 できました! ありがとうございました。
878 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 01:10:00 ] えええ
879 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 07:25:15 ] D3DXLoadMeshFromXInMemory のオプションで指定するD3DXMESH列挙型にはどんな意味があるのでしょうか? 色々と試してみたのですが、パフォーマンスに影響があるようには思えないのですが
880 名前:デフォルトの名無しさん mailto:age [2008/06/28(土) 08:02:10 ] HLSLの組み込み関数「ddx(x)」ついての質問です。 SDKのヘルプには、 スクリーン空間の x 座標について、x の勾配を返します。 とありますが、具体的にどんな計算をしているのですか? 教えていただけないでしょうか?
881 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 14:04:28 ] 英語では、Returns the partial derivative of x xの偏微分を返すって書いてるね。
882 名前:デフォルトの名無しさん mailto:age [2008/06/28(土) 15:43:46 ] >>881 レスありがとうございます。 x方向の傾きを返してくれるみたいですね。 その傾きを求めるための具体的な値が、どのようなものなのか、 わからなくて困っています。 傾き == 高さ / 距離 の「高さ」と「距離」は、 どんな値が使われるのか知りたいです。 どなたか、よろしくおねがいします。
883 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 16:29:24 ] プログラムと一緒にd3dx9_?.dllとかをダウンロードさせたいのですが、どのような形式なら 配布してよいんでしょうか?cabですか?
884 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 17:00:26 ] >>883 添付して配布は、ライセンス的に面倒なことになるんじゃなかったかな。 ウェブインストーラへのリンクを出せばいいと思う。
885 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 17:23:59 ] >>882 HLSLのddx()/ddy()は、PSのdsx/dsyに対応する。 dsxのマニュアルには、レンダリングターゲットのx 方向の変化割合とあるので ↓か、それに近い形になるんじゃないかなあ float2 delta = 1.0f / rendertarget.size; float1 dsx = ( pixelcolor( x+delta.x, y ) - pixelcolor( x, y ) ) / delta.x; float1 dsy = ( pixelcolor( x, y+delta.y ) - pixelcolor( x, y ) ) / delta.y;
886 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 17:58:22 ] >>883 つmsdn.microsoft.com/en-us/library/bb174600 (VS.85).aspx つmsdn.microsoft.com/en-us/library/bb219742 (VS.85).aspx ファイル単体ならライセンス違反だが、最小構成なら2MB程度の添付で済む。 ファイル単体で添付できるにこしたことはないんだが、MSは自分らのランタイムを プライベート配布されるのを嫌う傾向があるからなぁ。
887 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 21:55:22 ] まあ、なんかトラブルあったら、クレームは全部MSに来るわけだしな。 動かない、なんとかしろ、しか言わないキチガイにつきあうよりは、 自分トコから一括ダウソにしておいたほうがまだしもマシってことだろう。
888 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 14:32:56 ] firefoxみたいなブラウザの画面をテクスチャにするにはどうしたらいいでしょうか? win32APIを使うべきなのかDirectXを使うべきなのかもよくわからないです
889 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 19:38:35 ] 両方使え
890 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 20:46:44 ] これからDirectXの勉強をしようと思ってるんですけど、 SDKはどのバージョンを使えばいいのでしょうか? 9.0c以降多すぎてよく分からないです 開発環境や実行環境のサポート状況で適当に選んじゃっていいのかな
891 名前:882 mailto:sage [2008/06/30(月) 00:53:27 ] >>885 レスありがとうございます。 実際に値を入れて、いろいろと調べてみます。
892 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 23:13:30 ] コンパイルすると以下のようなエラーが出ます サンプルプログラムなのでソースにエラーはないと思います 調べましたが原因が分かりません よろしければどなたか御教授いただけないでしょうか? エラー E2238 c:\Borland\Bcc55\include\d3dtypes.h 113: '_D3DCOLORVALUE' の宣言が複数見つかった エラー E2344 C:\Program Files\mdsdk\Include\d3d9types.h 60: 一つ前の '_D3DCOLORVALUE' の定義位置 エラー E2146 c:\Borland\Bcc55\include\d3dtypes.h 130: 宣言には識別子が必要 エラー E2238 c:\Borland\Bcc55\include\d3dtypes.h 132: '_D3DRECT' の宣言が複数見つかった エラー E2344 C:\Program Files\mdsdk\Include\d3d9types.h 70: 一つ前の '_D3DRECT' の定義位置 エラー E2146 c:\Borland\Bcc55\include\d3dtypes.h 149: 宣言には識別子が必要 エラー E2238 c:\Borland\Bcc55\include\d3dtypes.h 151: '_D3DVECTOR' の宣言が複数見つかった エラー E2344 C:\Program Files\mdsdk\Include\d3d9types.h 51: 一つ前の '_D3DVECTOR' の定義位置 以下略
893 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 23:18:22 ] >>890 日本語マニュアル必須なら2004OCT 不要なら最新版使っとけ
894 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 23:38:23 ] まだBCC使ってるやつ居るのか…
895 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 23:44:44 ] BCCはDirectXに対応してないハズ どうしてもBCCがいいなら昔のバージョンを使うしかない VC使えばいいと思うよ
896 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 23:49:53 ] BCCからVCへの移行は難しい物なのでしょうか?
897 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 00:08:51 ] やってから言え どうしてお前が難しいと思うか予想しなければいけないんだ?
898 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 00:09:35 ] VCはISO準拠度が高いので もし、移植できないコードがあれば、それはコードが間違ってるってことだから 安心して修正していいよ
899 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 00:10:25 ] 分かりましたVCを導入してみます
900 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 01:18:06 ] どうせ趣味グラマだろ? 正規版OSならタダなんだから導入も糞もないだろ
901 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 10:53:32 ] 恐ろしいことに2005年以降でもExpressEdition+PlatformSDKを無視して BCCを使う入門書(笑)や入門サイト(爆)は実在するんだ…
902 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 12:02:15 ] 古いサイトが更新されてないだけではなく?
903 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 12:26:00 ] HDVファイルの任意のタイムコードの場所を表示する(orビットマップファイルで吐き出す) コマンドラインのプログラムを作らないといけなくなったのですが、DirectShowベースで 実現可能でしょうか? C:\> showHDV.exe /pid 10 /timecode 00:00:00:25 test.m2t ← こんな感じ
904 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 16:36:09 ] スレ違い。 とりあえずSDK読んで考えろ。
905 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 19:54:26 ] www.greenwood.co.jp/~k-aki/article/sslib2_dsound/source/sslib2/dsound/StreamSoundBuffer.cpp 上記のソースコードですが、CStreamSoundBuffer::Create内でCComPtrを二箇所使用しています。 CComPtrはググってみたところ、スマートポインタの一種と出ました。間違いないでしょうか? また、bufferはサウンドバッファでm_pStreamBufferに受け渡されているので解放されないのに対し、 notifyは何にも受け渡されないので解放(Release)されてしまうように思われます。 IDirectSoundNotifyはIDirectSoundBufferと異なり解放されても問題ないのでしょうか?
906 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 20:07:00 ] 言葉が足りなかったので IDirectSoundBufferはサウンドの再生時に必要になるので必要な間にReleaseすると問題になります。 であれば、IDirectSoundNotifyは通知位置を設定するのに使ったので解放すると設定無効にならないのでしょうか?
907 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 21:48:18 ] 自己解決しました。 msdn.microsoft.com/ja-jp/library/cc370470.aspx 上記を見るかぎり、解放しても問題なさそうですね。
908 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 23:32:35 ] >>904 あんまり有益じゃないアドバイスですね。 一応スレにはルールがありますので、ルールに則った回答をお願いします。
909 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 23:57:59 ] このスレは初心者と優しい人とギスギスした人で成り立ってます プログラマーって極端だな
910 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 00:14:16 ] 最近のSDKではDirectX9の更新が無いようですが、 最後に更新されたのはどのバージョンですか?
911 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 00:25:20 ] d3dx9_xx.dllのバージョンが上がっている以上、 今でも更新されているとお考えください
912 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 02:14:10 ] マスターアップ前のPGは生理痛の時の女と一緒 つまり、女のPGは大変てこった
913 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 14:48:39 ] ロックできる指定サイズのサーフェィスってどうやってつくんの
914 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 19:57:19 ] 質問です。 DirectSoundでプライマリバッファのボリュームをいじると、Windowsアプリケーションの「ボリュームコントロール」でコントロールできるWavのところに反映されてしまうようでいまいちよろしくありません。 ゲーム終了時に元に戻すことも考えましたが、ゲーム中にユーザーが「ボリュームコントロール」からいじってたら〜と考えるとこれでも不適当かと。 なので、いったん 「ゲームのBGMや効果音のセカンダリバッファ」 > 「セカンダリバッファ」 > プライマリバッファ と、1つセカンダリバッファをかませたいのです。 DirectXのヘルプを読むと「ほとんどのバッファの場合、出力先はプライマリ バッファと呼ばれるミキシング エンジンである」 とあったため、工夫すればセカンダリをかませることはできそうなのですが、良い手法はありますでしょうか?
915 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 20:21:20 ] マスターボリュームをいじるプログラムにするな 以上!
916 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 20:48:58 ] AOE2はゲーム終了時とかフォーカス喪失時にボリューム元に戻すような仕様だったな 大企業でさえそれなんだから別に気にしないってのも一つの手だとは思うが どうしても嫌ならManagedDirectXのセカンダリバッファがヒントになるかもしれん
917 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 22:12:01 ] 丁度DirectSoundで盛り上がってるみたいで便乗を 現状、効果音を多重に鳴らす際にDuplicateSoundBufferを使ってます でもこれ、鳴り終わるまではReleaseしちゃいけないので面倒です 今はここのイベント通知処理を利用し ttp://msdn.microsoft.com/ja-jp/library/cc370470.aspx play時にDuplicateSoundBufferで複製。ついでにstaticなリストにCComPtrでくるんで追加。 再生が終わったらリストからはずす(よって開放される) という感じに実装しています でもこれが異常に面倒。とてもほかの方々がそうやってるとは思えません そもそもDuplicateSoundBufferについてぐぐるにひっかからなさすぎ(26件) みなさん多重に再生する必要がある効果音などは、どのようにしているのでしょうか?
918 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 22:13:30 ] >>917 補足です 再生が終わったらイベントが通知され(登録したコールバック関数が呼ばれ)、そこでリストからはずすようにしています。 リストが壊れないようにクリティカルセクションでかこってやったり、かなり面倒なんですよね 一度作ってしまえばあとは使うだけとは言え・・・
919 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 22:25:27 ] 効果音を鳴らすたびに作って解放するのかと逆に問いたい
920 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 22:58:09 ] Managedの話で悪いが俺は最大同時再生数と同じ数だけセカンダリバッファ作っちゃってるわ 再生終了はコールバックじゃなくて毎フレームのポーリングで対処してる 少なくとも俺のPCでは遅延とかメモリ食いすぎとかは起こってない
921 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 23:02:08 ] >>920 私もそんな感じの作りにしてます 他で使うメモリに比べればサウンドで持っていく割合とか微々たるもんだしって感じに思えたので
922 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 23:05:54 ] >>920 デュプリケートって内部的にカーソルとかその辺のインターフェイスがコピーされるだけで、 実体のサウンドファイルは1つのままだと思うだけどまさか全メモリコピーなのか?
923 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 23:10:06 ] >>922 なん・・・だと・・・? 今まで全メモリコピーだったわけだが SDKのリファレンス見たらそんなような事書いてあるな どう考えてもDuplicateSoundBuffer使ったほうが効率的じゃねえか・・・
924 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 07:05:25 ] >>923 お前w 昔のDirectX7本とかじゃこの手のは当たり前にのってるのに、最近はおざなりだよなー
925 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 19:46:01 ] directxのapiで音声入出力のメモリに直接アクセスする手段ってありますか?
926 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 23:35:32 ] DuplicateSoundBufferに対応していないサウンドボードがまだありそうな気がする・・・
927 名前:925 mailto:sage [2008/07/07(月) 23:35:36 ] 自己解決
928 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 23:50:55 ] 自己解決したときにその情報を出さないやつが、なんで質問して情報を出させようとするんだろうな
929 名前:925 mailto:sage [2008/07/08(火) 00:08:35 ] >>927 は自分じゃありません
930 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 00:10:42 ] 「DuplicateSoundBuffer」がサウンドカードの機能だと思っている人が居たことに衝撃。
931 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 00:48:58 ] マルチポストに答えてやったら、別スレで「自己解決しました」って 報告してるのを見たときは吹いた
932 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 07:05:59 ] >>930 ちげーの? 「ドライバだよ!」とかいう言葉遊びは簡便な
933 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 10:01:37 ] >>932 いやDirectXが処理してる。 音を出すのはサウンドカードだが音のデータをサウンドカードに流してるのはCPUだぞ。 デュプリケートは1つのバッファに対してどこ部分をプライマリにコピーするかって 情報をもったインターフェイスが増えているだけの話だからぶっちゃけ全部CPU処理だぜ。 不安ならセカンダリをLOCALで作成してDirectSound自体をCPU処理固定にすると 環境依存のバグが発生しなくなるのでお勧め。 元々サウンドカード上の専用メモリとかISA時代の転送が遅かった時代のカードにしかないし。
934 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 10:29:22 ] >>933 おいおい、そりゃ「DirectXでソフトウェアエミュレート」すればDirectXの仕事だけどさw 普通に使ってればDuplicateSoundBufferの命令をうけて(ハード上なり、PCのメインメモリー上なりに)バッファを確保するのはサウンドカード・ひいてはそのドライバの仕事だぜ? だからこそ、DuplicateSoundBufferは必ず成功するとは限らないんじゃないか。
935 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 12:46:43 ] 実際に動作しないサウンドカードの製品名を挙げてくれ。 そもそもいったいいつの時代の話をしているんだ?
936 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 12:48:19 ] 動かないハードがあるとして、その場合はソフトウェアで勝手にやってくれないもんなの?
937 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 14:33:49 ] 具体的名称までは聞いたことないが、 「PCゲー作ってる会社でのよくあるサウンド関係のトラブルはそれだから注意しな」 と付き合いのある会社から言われたな ちなみにSDKサンプルでも、きちんとDupできないならCreateでごまかすように組んである 自動ではやってくれない
938 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 19:12:39 ] >>937 >DupできないならCreateでごまかす それこそまさにISAの時代の話じゃなくて? オンボードReadtek、USB外付け音源、サウンドブラスター、 MonsterSound あたりはテストしたが、そんな大きな不具合に遭遇したこと無いな。 それより、ASIO にした方が良いのかぁ、と思ったことは何度かある。
939 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 20:24:02 ] そういうわけで完全ソフトウェア処理のXAudio使えや愚民共、と相成りました
940 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 22:11:27 ] XACTがないと早送りや巻き戻しすらできないあれか
941 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 23:04:51 ] 今時クエリーインタフェイスとか 愚民杉
942 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 23:53:19 ] 今も昔もそもそもDirectSoundにハードウェアのまともな対応を期待する方が愚。 かなり初期の頃からDirectSoundだけはソフト処理でやるのが鉄板になってたはずだぞ。
943 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 23:57:24 ] DirectSoundをソフト処理って、どういう意味合いで言ってるんだみんな? IDirectSoundBufferの確保時に、フラグでDSBCAPS_LOCSOFTWAREをいれるってこと?
944 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 23:57:25 ] 選べるようにしておけばいいだけの話だろ
945 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 00:08:35 ] たしか、DirectSound ってサウンドカードのメーカーのあまりものグダグダさに、 マイクロソフトが嫌気がさして、ソフトウェア処理でこれからは行く、とかっていう 記事を見た気がする。 Vista DirectSound HAL で検索をかけるといろいろ出てくる。 Windows は DTM 系のソフトが弱いってのはこの辺りが原因なのかねぇ? ローランドあたりが先陣切ってやってくれないとね。
946 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 00:17:57 ] VistaのMIDIへの冷遇は忘れねえ
947 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 00:25:19 ] >>943 そういうこと。 たとえば最初の3つはサウンドカードのメモリに確保されていて、 その後はメモリが足りなくてシステムメモリに確保された場合に、 ミキシングが絶望的な状況になる。 いまどきのCPUならSSEとかMMXあたりでミキシングできるし、 10個20個程度ミキシングしてもCPUの負荷なんざ1%も食わないのでサウンドカードは ただの音声出力装置以外の機能は期待しない方がいいと思われ。 そもそもサウンドカードに専用メモリ乗ってたのってCPUからの転送が遅かったISA時代だしな・・・。
948 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 01:24:23 ] soundblasterの割と最近のサウンドカードがスタティックバッファ持ってるけど、あれが使える状況ってあるのかな
949 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 09:59:42 ] DSBCAPS_LOCSOFTWAREフラグたてておけば、DuplicateSoundBufferは必ず成功するのかな? みんなわりと音楽系はそんなに気をつかってないんだね
950 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 22:49:22 ] SOFTWARE でもサイズが大きいと失敗する。 正確には、Duplicate の時は成功するが Play の瞬間に失敗するようになる。
951 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 22:52:48 ] >>947 今のCPUをもってしても遅延が絶望的に大きいのが欠点。 外部入力への反応での遅延は致命的。 ASIO であってもまだ不満。
952 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 00:19:59 ] DirectSoundでDuplicateして鳴らすなんて普通はゲームのSEだろう。 その程度なら1,2フレ遅れたところでたいした問題ないよ。
953 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 01:45:29 ] >>951 ASIO がだめってどんなんだよ・・・。 ゲームの場合は少し前からSEを鳴らし始めればいいわけで。
954 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 15:47:38 ] 音ゲ厨と60fps厨が組み合わさった怪物だろう
955 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 18:54:55 ] > 外部入力への反応 って書いてあるから、サウンドエフェクタとかボイスチャットみたいに リアルタイムにキャプチャーした音を加工するやつじゃね?
956 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 21:49:55 ] ゲームとマジDTMとはまた違うからなぁ
957 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 00:10:26 ] ボイスチャットなんざネットワーク介して時点で遅れてるんだから関係ないだろ
958 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 00:38:21 ] 出力だけ同期してりゃいいんだよ