[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 04/11 09:12 / Filesize : 247 KB / Number-of Response : 959
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【C++】 DirectX初心者質問スレ Part17 【C】



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/

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 ]
出力だけ同期してりゃいいんだよ






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<247KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef