【C++】 DirectX初心者質問スレ Part31 【C】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/09/30(木) 21:45:21これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
4.余計な雑談は不要ですよ
【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。
【 質問する方 】
・ どんな事で躓いているのか明確にしよう。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。
・ 回答して貰ったら、出来るだけお礼もしよう。
前スレ
【C++】 DirectX初心者質問スレ Part30 【C】
http://hibari.2ch.net/test/read.cgi/tech/1278214135/
0191デフォルトの名無しさん
2010/10/04(月) 20:45:070192デフォルトの名無しさん
2010/10/04(月) 20:45:21自分で環境変数を増やせばいいじゃない
別に一個じゃなきゃいけない理由も無いんだし
0193デフォルトの名無しさん
2010/10/04(月) 21:54:52SetRenderStateで設定してるものは全て無効になるんですよね?
すべてシェーダー側で設定しろってことですか?
カリングモードの設定もですか?
よろしくお願いします。
0194デフォルトの名無しさん
2010/10/04(月) 22:07:24そうでないと話にならない。
0195デフォルトの名無しさん
2010/10/04(月) 22:13:35試しました。たぶんそうなんですが、念のための確認です。
スパルタ教育は好きです。
0196デフォルトの名無しさん
2010/10/04(月) 22:15:570197デフォルトの名無しさん
2010/10/04(月) 22:19:34やり直して確信に変わりました。ありがとうございました。
0198デフォルトの名無しさん
2010/10/04(月) 22:39:44同じアプリ内のEVR (DirectShow)です。
0199デフォルトの名無しさん
2010/10/04(月) 23:17:10αブレンドの設定は生きてるぞ
他にも生きてるもんあんだろ
0200デフォルトの名無しさん
2010/10/05(火) 00:11:450201デフォルトの名無しさん
2010/10/05(火) 00:17:340202デフォルトの名無しさん
2010/10/05(火) 00:31:12何が生きて何が生きてないんですか?
勉強不足でホントすみません。
0203デフォルトの名無しさん
2010/10/05(火) 00:32:230204デフォルトの名無しさん
2010/10/05(火) 00:41:45知らん
そのときどきで「おーこいつ生きてるじゃんoh!yeah!」って対処しろ
0205デフォルトの名無しさん
2010/10/05(火) 00:46:58もうしょうがないわね。わかったよ。
0206デフォルトの名無しさん
2010/10/05(火) 01:10:11マジレスするとシェーダー使っててもSetRenderStateは全て無効にならない
基本事項はSetRenderStateで設定しといて
シェーダー内のみで変更したい項目をシェーダー側で変更する
ID3DXEffect::Beginでパラメーターを指定しなければEndの時に変更部分が復元される
0207デフォルトの名無しさん
2010/10/05(火) 09:22:16最高です!釣りじゃありません!
ちょっと前から厳しい人がいたんで反応を見てただけです!
スパルタ教育は好きなんですけどね!
ありがとうございました!
0208デフォルトの名無しさん
2010/10/05(火) 09:33:01追加で質問です。
Beginでパラメータを指定しないってことは第二引数を0にするってことですよね?
変更部分が復元されるというのは、シェーダ内での変更がそのまま維持されるということでしょうか?
それとも、シェーダ内で変更した項目は全てリセットされ、シェーダーで変更する前の状態に復元されるということでしょうか?
何度もすみません。よろしくお願いします。
0209207
2010/10/05(火) 09:52:12シェーダ内の変更がそのまま復元され維持されるということですね。
復元されちゃったら、また元に戻さないといけないのでやめたほうが良さそうですね。
0210デフォルトの名無しさん
2010/10/05(火) 11:49:07207=209じゃないよな?
0211デフォルトの名無しさん
2010/10/05(火) 11:52:300212デフォルトの名無しさん
2010/10/05(火) 12:01:200213デフォルトの名無しさん
2010/10/05(火) 12:08:390214デフォルトの名無しさん
2010/10/05(火) 12:11:230215デフォルトの名無しさん
2010/10/05(火) 12:38:590216デフォルトの名無しさん
2010/10/05(火) 12:47:47だろ。の人は回答する気がないならいい加減消えればいいのに
0217デフォルトの名無しさん
2010/10/05(火) 12:59:42人が悪いなと思ってしまう。
0218デフォルトの名無しさん
2010/10/05(火) 13:22:130219デフォルトの名無しさん
2010/10/05(火) 13:29:030220デフォルトの名無しさん
2010/10/05(火) 13:56:58対処法がわかりません。教えて下さい。
fatal error RC1011: compiler limit : 'XSKINEXP_TEMPLATES': macro definition too big
0221デフォルトの名無しさん
2010/10/05(火) 14:00:50日本語でおk
0222デフォルトの名無しさん
2010/10/05(火) 14:08:520223デフォルトの名無しさん
2010/10/05(火) 14:12:07compiler limit : 'identifier' : macro definition "too big"
Try to split the definition into shorter definitions.
0224デフォルトの名無しさん
2010/10/05(火) 14:21:35MP3が読み込めません。
どうすればいいんでしょうか。
0225デフォルトの名無しさん
2010/10/05(火) 14:34:29XAudioだかはWMA風データなら読めるがMP3は読めない
MP3を簡単に再生するならWin32APIかDirectShow
ちゃんとやりたかったらSDKなりでWAVに変換せよ
0226デフォルトの名無しさん
2010/10/05(火) 14:36:30自前でデコードするかDirectShowを使うしかない
0227デフォルトの名無しさん
2010/10/05(火) 14:50:56oggなら展開用のライブラリもそのへんに転がってるし
0228デフォルトの名無しさん
2010/10/05(火) 15:47:29レスありがとうございます。
DirectShowやoggを検討してみます。
0229デフォルトの名無しさん
2010/10/05(火) 22:53:52結構安いと思うんだけど?
お前ら的にはあり?
IS01 1円スタート 即決有
http://page9.auctions.yahoo.co.jp/jp/auction/k134019945
http://page8.auctions.yahoo.co.jp/jp/auction/h145981541
http://page11.auctions.yahoo.co.jp/jp/auction/n91104112
http://page10.auctions.yahoo.co.jp/jp/auction/m77370908
http://page2.auctions.yahoo.co.jp/jp/auction/b113651808
IS02 1円スタート 即決有
http://page11.auctions.yahoo.co.jp/jp/auction/n93102178
http://page2.auctions.yahoo.co.jp/jp/auction/b113622828
http://page11.auctions.yahoo.co.jp/jp/auction/n92987886
0230デフォルトの名無しさん
2010/10/05(火) 22:59:49こいつ宣伝しまくってるな。
0231デフォルトの名無しさん
2010/10/05(火) 23:02:11面倒だけど癖になるからアク禁依頼だしてくるか
0232デフォルトの名無しさん
2010/10/06(水) 00:27:490233デフォルトの名無しさん
2010/10/06(水) 02:09:230234デフォルトの名無しさん
2010/10/06(水) 17:48:33読み込みから解放までを。
すみません。
0235デフォルトの名無しさん
2010/10/06(水) 18:06:57ファイル名や識別子などからリストを検索
未登録ならテクスチャを作成しリストに登録
登録済みならテクスチャへのポインタを返しAddRef(参照カウントを増やす)
必要なくなったら参照先でRelease
参照カウンタが0になったらリストから削除
0236デフォルトの名無しさん
2010/10/06(水) 18:21:14パスはレンダーステートとプログラムのセットですか?
0237デフォルトの名無しさん
2010/10/06(水) 18:22:49ありがとうございます。
描画する際もファイル名などからリストを検索して描画ルーチンに渡しているのでしょうか?
もしそうなら、その検索時間は気になりませんか?
0238デフォルトの名無しさん
2010/10/06(水) 18:24:04ハッシュマップとかIDでソートかけておくとか
0239デフォルトの名無しさん
2010/10/06(水) 18:26:450240デフォルトの名無しさん
2010/10/06(水) 18:26:55なるほど。ありがとうございます。
STLのコンテナを使わないのは何故ですか?
0241デフォルトの名無しさん
2010/10/06(水) 18:36:44しないよ
描画オブジェクトもテクスチャへのポインタを持たせておけば読み込み時の1回だけでいいだろう?
なんのための参照カウンタだ
0242デフォルトの名無しさん
2010/10/06(水) 19:30:24なるほど!本当にありがとうございます!
最高のシステムですね!参考にさせていただきます!
0243デフォルトの名無しさん
2010/10/06(水) 19:32:35本当に本当にありがとうございました!
0244デフォルトの名無しさん
2010/10/06(水) 20:44:49col.xyzw = 1と同じですか?
0245デフォルトの名無しさん
2010/10/06(水) 21:03:340246デフォルトの名無しさん
2010/10/06(水) 21:08:490247デフォルトの名無しさん
2010/10/06(水) 22:35:30自分は別な質問者ですが、
参照カウンタが0になったら、というので
内部参照カウンタの値を取得するにはどうすればよいですか?
それとも自分で数えておくのですか?
0248247
2010/10/06(水) 22:39:48ULONG = Hoge->addref() - 1;
Hoge->Relase();
ですね
0249デフォルトの名無しさん
2010/10/06(水) 23:31:020250デフォルトの名無しさん
2010/10/06(水) 23:41:090252デフォルトの名無しさん
2010/10/07(木) 09:24:14Syntax
C++
ULONG Release()
Return Value
Returns the new reference count. This value is for diagnostic and testing purposes only.
0253247
2010/10/07(木) 09:30:05まじすか ありがとうございます
じゃあ上の参照カウンタが0になったら、
っていうのは自分で数えておけということでしょうか?
それとももっとましな方法がありますか?
0254デフォルトの名無しさん
2010/10/07(木) 10:00:58自分で覚えておけばおk
0256デフォルトの名無しさん
2010/10/07(木) 11:13:43それって単にマルチスレッド環境での保証がされてないってだけじゃね?
0257デフォルトの名無しさん
2010/10/07(木) 13:58:14もっといい方法ないですか?
皆さんの描画システムを簡単に教えてほしいです。
0258デフォルトの名無しさん
2010/10/07(木) 14:06:26前提条件も把握せずに答える馬鹿が出てくるかもしれないが、
頭の悪い内容しか返ってこないぞ。
0259デフォルトの名無しさん
2010/10/07(木) 14:13:06テクスチャ型と座標を管理したクラス配列を持つクラスにやってもらう
てか、テクスチャ型と座標って何の話だ?www
0260デフォルトの名無しさん
2010/10/07(木) 14:28:26具体的に言うと、LPDIRECTD3DTEXTURE9とそのキャラクターの位置座標を渡して
描画してもらうようにしています。
>>259
こんな回答でも参考になります。
0261デフォルトの名無しさん
2010/10/07(木) 15:05:21【ソースコード】
for(i=DSBVOLUME_MAX; i>DSBVOLUME_MIN; i-=25)
{
pDSData->SetVolume(i);
Sleep(1);
}
pDSData->Stop();
フェードアウトの方法が間違っているのでしょうか。
よろしくお願いします。
0262デフォルトの名無しさん
2010/10/07(木) 15:05:49手段の説明しかしていないのが分からないのか?
0263デフォルトの名無しさん
2010/10/07(木) 15:08:46まずはサウンドカードを別の物に交換して確認する。
0265デフォルトの名無しさん
2010/10/07(木) 15:34:58日本語は通じてる?
対応云々の話なんて一切していない。
別のサウンドカードで確認しろと言ってるの。
0267デフォルトの名無しさん
2010/10/07(木) 15:40:210268デフォルトの名無しさん
2010/10/07(木) 15:44:54具体的にその2品の製品名なりチップセット名は?
0269デフォルトの名無しさん
2010/10/07(木) 16:01:10Sleep間隔を長くする。
もっとまともなタイマーを使う。
完全なフェードにするには1サンプル毎に減衰させる。
0270261
2010/10/07(木) 16:04:38wavデータをセカンダリバッファに書き込むときに減衰した値を書き込む訳ですね。
しかし、ストリーミング再生をしているので、恐らくセカンダリバッファをロックして
バッファの値を読んで減衰した値に書きなえないとダメだと思うのですが、
フェードアウトするためにバッファをロックするタイミングがわからなかったりします。
>>268
�@SoundMAX Integrated Digital Audio
�ADigidesign MBOX2Pro ← プロ用のDirectSound対応
です。
0271デフォルトの名無しさん
2010/10/07(木) 16:05:030272デフォルトの名無しさん
2010/10/07(木) 16:09:15サウンドカードとしては最悪に分類される製品。
音が出るだけありがたいと思わなければならない。
�ADigidesign MBOX2Pro ← プロ用のDirectSound対応
不明
0273デフォルトの名無しさん
2010/10/07(木) 16:19:060274デフォルトの名無しさん
2010/10/07(木) 16:20:20Sleep(1)が良くないんじゃね?
0275261
2010/10/07(木) 16:20:38>ボリューム値の変動を細かくする、Sleep間隔を長くする
10秒ぐらい掛けてフェードアウトするとなめらかなのですが・・・
50ms以内にフェードアウトしたいです。
>もっとまともなタイマーを使う
Sleepには、1ms〜14msのばらつきがあるのは確認しましたが、
もっとまともなタイマーを使うというのは、1msよりも短い時間で
ボリュームを変更するということを兼ねているのでしょうか。
>完全なフェードにするには1サンプル毎に減衰させる
本当はこれをやりたいのですが、どのような方法で実装すればよいのか
僕の技術力不足でわかりません。
>>272
>Digidesign MBOX2Pro
ミュージシャンがDirectSound対応のソフトシンセを使って
音を鳴らすことを前提に設計されているようです。
0276デフォルトの名無しさん
2010/10/07(木) 16:21:53USB接続の時点で、細かく切り替えたら駄目だろ。
0277デフォルトの名無しさん
2010/10/07(木) 16:24:49Sleep(16)くらいで試してくれ
0278デフォルトの名無しさん
2010/10/07(木) 16:27:30その衝撃がノイズになって当たり前なのは分かっているのか?
0279261
2010/10/07(木) 16:32:04僕も過去にそういう経験があったような気がします。
もともと、やりたいことは、
ストリーミング再生において、「play → stop → 曲を変えてplay」のときの
stop時に発生する、ノイズを消し去ることです。
ノイズを消し去る方法をインターネットで調べているうちに下記の方法を知りました。
----
セカンダリバッファを2つ用意して
1個目 -- 曲のplay → stop → 曲を変えてplay
2個目 -- 無音の音をずっと流す。
----
実装しましたが、stop時のノイズは消えませんでした。
>>276
IEEE1394仕様です。
>>277
了解しました。
Sleep(16)あたりで試してみます。
>>278
あまりわかっていません。
どこかのサイトで50msでフェードアウトするとstopノイズが消えると見かけたので
50msを目標にしています。
0280261
2010/10/07(木) 16:33:29>このバグの対処法として、セカンダリバッファの停止時に、
>50msくらいでフェードアウトさせると良い、とあります。
というのを見かけました・・・
0281デフォルトの名無しさん
2010/10/07(木) 16:34:305段階くらいのフェードアウトで十分だと思う
0282デフォルトの名無しさん
2010/10/07(木) 16:41:2250ms間隔でフェードアウトの間違いなんじゃ
0283デフォルトの名無しさん
2010/10/07(木) 16:59:53> 徐々に(50msぐらいで)フェードアウト
0284デフォルトの名無しさん
2010/10/07(木) 17:05:050285デフォルトの名無しさん
2010/10/07(木) 17:06:010286デフォルトの名無しさん
2010/10/07(木) 17:09:45二度とこないよ。
0287デフォルトの名無しさん
2010/10/07(木) 17:11:280288デフォルトの名無しさん
2010/10/07(木) 17:17:220289デフォルトの名無しさん
2010/10/07(木) 17:33:30DirectSoundって言うよりWDMサウンドデバイスのバグでしょ?
0290デフォルトの名無しさん
2010/10/07(木) 17:38:42さようならノシ
■ このスレッドは過去ログ倉庫に格納されています