- 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/
- 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 にした方が良いのかぁ、と思ったことは何度かある。
|

|