- 1 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 22:06:29 ]
- ※回答する人も、質問する人も必ず読んでください
これらに当てはまる人のための質問スレです。 1.C/C++は多少理解している。 2.最近DirectXを始めたばかり 3.SDKを見ても、Googleで検索しても、いまいち理解できない人 4.余計な雑談は不要ですよ 【 回答してくださる方 】 ・ できるだけ優しく質問に答えてあげてください。 ・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。 「ググれ」「SDK見れ」以外の回答でおながいします。 ・ 神ですら理解不能な質問は無視して下さい。 【 質問する方 】 ・ どんな事で躓いているのか明確にしよう。 ・ 長くならないなら躓いている部分のコードを晒してみれ。 ・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。 ・ 回答して貰ったら、出来るだけお礼もしよう。 【C++】 DirectX初心者質問スレ Part23 【C】 pc12.2ch.net/test/read.cgi/tech/1242977486/
- 173 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 02:28:18 ]
- >>171
元々テクスチャというのは不定形のメッシュに伸び縮みさせながら貼り付ける道具だから、 デフォルトでフィルターがかかるようになっている。 FilterとMipFilterをD3DX_FILTER_NONEにすれば補間は起こらないよ。 >>164 初心者に嘘ばかり教えない。 おまえ、ネットブック(GMA950)で動作チェックしたことないだろ?
- 174 名前:160 mailto:sage [2009/07/05(日) 02:49:04 ]
- >>173
ありがとうございます。 黒い領域が残ったけどクリッピングで消せそうなので大丈夫そうです。 VCproだと64×64になってしまったのですが、ExpressEditionでプロジェクトを 作り直したら40×40のテクスチャを作れました。 原因はVCの設定ミスなんでしょうか・・・
- 175 名前:デフォルトの名無しさん [2009/07/05(日) 05:17:56 ]
- スキンメッシュをリソースファイルから呼び出すにはどうすれば良いですか?
- 176 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 06:58:30 ]
- >>173
GMA950はNONPOW2CONDITIONALがYesだったと思うが。 NONPOW2CONDITIONALはドライバレベルで対応できる機能だから、 よほど古くてドライバが更新されてないのでなければ使える。
- 177 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 09:14:36 ]
- デフラグを頻繁に行うと間違いなくHDDにダメージを与える事になる
PCの調子がおかしい時は基盤とかにホコリがたまってて電源不足になってる可能性あり
- 178 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 09:28:29 ]
- >>174
なんでUVを適切に設定しないでクリッピングなんだ? 意味分からん >原因はVCの設定ミスなんでしょうか・・・ 人の話を聞かない奴だな
- 179 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 12:49:38 ]
- 断片化した状態で使うのは常にデフラグをかけているのと同義
- 180 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 12:59:03 ]
- 結局確率の話でしかないだろ。
対象のファイルが ・頻繁に読む・固定長で書き込み HDD側で2桁程度の高速化 ・永久に使用しない 無益 ・追記する場合 また断片化する
- 181 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 13:18:19 ]
- まぁSSDにしとけってこったな
- 182 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 13:32:41 ]
- はいはい、スレ違いスレ違い
- 183 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 14:02:30 ]
- コンパイルしようと思ったら
1>------ ビルド開始: プロジェクト: a, 構成: Debug Win32 ------ 1>コンパイルしています... 1>main.cpp 1>マニフェストをリソースにコンパイルしています... 1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1 1>Copyright (C) Microsoft Corporation. All rights reserved. 1>リンクしています... 1>LIBCMTD.lib(dbgheap.obj) : error LNK2005: __CrtSetCheckCount は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: _exit は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: __exit は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 ・ ・ 1>libjpeg_d.lib(jpegtran.obj) : error LNK2019: 未解決の外部シンボル _keymatch が関数 _parse_switches で参照されました。 1>D:\Program Files\VC\project\a\Debug\a.exe : fatal error LNK1120: 外部参照 9 が未解決です。 1>ビルドログは "file://d:\Program Files\VC\project\a\Debug\BuildLog.htm" に保存されました。 1>a - エラー 40、警告 2 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== と出ます。何が原因でしょうか? コード自体は homepage2.nifty.com/natupaji/DxLib/dxuse_vc2008express.html#R6 の6.プログラムを組む、というプログラムです
- 184 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 14:08:36 ]
- >>183
はいはい、CRTの設定ミス。全プロジェクトで統一しようね。
- 185 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 14:22:53 ]
- >>184
ありがとうございます CRTよくわかりませんがぐぐって調べてみます
- 186 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 14:30:59 ]
- >>184
できました。ありがとございました
- 187 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 16:22:43 ]
- 他アプリ(DirectXモノ)画面に上書き描画出来るようになったんだが、チラツキが多すぎて微妙です。
タイマーを使っているのが間違いだと思うのですが、解決方法ありますか? Presentフックが王道とは思うのですが、vsync待ちの処理ができる方法があるならアドバイスいただけないでしょうか。
- 188 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 17:24:43 ]
- 質問です。
D3Dで地面に影メッシュを表示しようと思うのですが、地面とまったく同じ高さに描くと Z-fightingが起こってしまいますよね。 これに対処するためわずかに地面から浮かせていたのですが、Z-fightingが起こらない程度に浮かせると 影の位置がずれているのが結構見えてしまいます。 そこで「描画位置はそのままに、Zバッファでの比較の際バイアスをかける」方法がないか探しているのですが、 どうにも見当たりません。 バイアスをかける方法があれば教えていただきたいのです よろしくお願いします。
- 189 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 17:42:25 ]
- 188自己解決です
float bias = -0.1f; pDev->SetRenderState(D3DRS_DEPTHBIAS, *((DWORD*)&bias)); で出来ました。 が、D3DRS_DEPTHBIASはマイナーな上、サポートしていないグラボも少なくないとか? このあたりの情報おもちのかたいらっしゃいましたら、教えていただければと思います。
- 190 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 17:49:41 ]
- >>188
単純に地面のあとから描けばいいような気がするんだが、それで問題があるんだろうか。
- 191 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 17:49:43 ]
- シェーダーでやれば問題ない。
- 192 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 18:08:42 ]
- 質問です。
Xファイルとやらでオブジェクトを表示させようとしたのですが、メッシュ(?)だけ表示されて色の情報が描写されません。 同じようなことがあった人がいたら解決法を教えてください。お願いします
- 193 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 18:22:42 ]
- あーいーうーえーおー
あ あしかの赤ちゃん雨の中 赤い雨傘甘えん坊 い いちご畑の一年生 石ころ一個 コロコロ う 宇宙の海で運動会 え 円盤遠足絵の具で絵日記 お 折り紙のオルガンで あ い う え お の 音楽 あーいーうーえーおー
- 194 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 18:38:47 ]
- 再現する最低限のコード晒すといい。
- 195 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 18:41:30 ]
- Xファイルはあくまでデータのコンテナであって、
中のデータをどう描画するかは自分次第。 よって自分でやっていないからとしか言いようがない。
- 196 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 20:23:51 ]
- 色々やってみたら、テクスチャのファイルネームに何も入っていないことがわかりました。何とかなりそうです、ありがとうござました
- 197 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 20:34:55 ]
- GDIのコントロールを描画しようというのが根本的に王道ではない。
王道だったらMicrosoftがやってる。
- 198 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 22:22:34 ]
- >>197
ありがとうございます 描画対象エリアのみ2D使ってるぽいところに2D上書き予定なのですが、 zが手前になるように追加描画が出来るか調べてみようかと思います
- 199 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 15:39:10 ]
- 質問です。
ピクセルシェーダの色出力を省略し、深度バッファへの書き込みだけを行う方法があったと思うのですが どなたかわかる方いらっしゃいますでしょうか? PixelShaderの返り値をvoidにしたらHLSLコンパイルエラーになりましたし、 PixelShader = NULL; にしたら妙な色が書き込まれてしまいました。
- 200 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 16:41:02 ]
- SetRenderState()で色の書き込みをマスクする。
DirectX10ならSetRenderTargetでNULLをいれる。
- 201 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 16:50:02 ]
- D3DRS_COLORWRITEENABLE
ですね。 ただこれは、マスクを0にしてもピクセルシェーダ自体は呼び出されてしまうようです。 ピクセルシェーダ自体を呼び出さずに済ませてしまう方法があったような気がするのですが・・・ 曖昧な記憶で申し訳ないです
- 202 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 17:48:55 ]
- 9でも連打ーターゲットNULLでいけなかったっけ
- 203 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 18:12:17 ]
- >>201
DirectX9にはない。 0.0を出力しとけ。 普通は色の出力を全部マスクしていればドライバー側で PixelShaderの処理はスキップしてくれるはず。 >>202 インデックス0に対してはNULL無理。
- 204 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 20:31:43 ]
- ピクセルシェーダから深度値を変更できるんだから、
カラー出力しなくてもスキップされるわけないだろう。
- 205 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 20:35:20 ]
- 深度値を出力した時だけ早期Zカリングがスキップされたりするんだから
カラーマスクと深度出力をみて不要ならスキップもしてるだろ。
- 206 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 20:56:12 ]
- スキンメッシュのプログラムはマテリアルを設定してないの?
- 207 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 21:28:10 ]
- それは自分次第だろ。
- 208 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 21:44:46 ]
- HELP ME
Xファイルを表示するためにマテリアルの数を変数に格納したはずなのになぜか格納されていません。 推測で原因を教えてください
- 209 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 21:57:48 ]
- 推測だがお前が悪い
- 210 名前:デフォルトの名無しさん [2009/07/06(月) 22:54:50 ]
- directsoundでIDirectSoundBuffer8::SetVolumeをセットしても音量に変化がありません。なぜだすか?
- 211 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 22:57:08 ]
- >>210
っ 初期化
- 212 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 23:49:24 ]
- >>211
IDirectSound8::CreateSoundBufferが内部で初期化してるけど、音量変更前にもう一回初期化するってこと? そもそもループ内でそれやるの難しくない?
- 213 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 23:56:55 ]
- 最初にやれよ
- 214 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 00:01:05 ]
- CreateのときにDSBCAPS_CTRLVOLUMEフラグを立ててないからって落ちじゃ?
- 215 名前:デフォルトの名無しさん [2009/07/07(火) 00:51:34 ]
- a
- 216 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 01:02:16 ]
- DI8で pDI8->EnumDevices でデバイスを列挙するのはわかるんだが
pJoyDevice->EnumObjectsでプロパティを列挙したときに何が取得できるかよくわからない たぶんボタンがいくつあるとか軸の範囲とかの取得・設定ができるんだと思うんだけど EnumObjectsCallback内でpJoyDevice->SetPropertyとかやっているサンプルが多く、 これだとpJoyDeviceが1つのときは問題ないんだろうけど 複数のpJoyDeviceを扱いたいときとかどうすればいいのだろう? とか考えるとさらによくわからなくなりまつ BOOL CALLBACK EnumObjectsCallback( const DIDEVICEOBJECTINSTANCE* pdidoi,VOID* pContext ) のpContextに、プロパティ設定したいデバイスのpJoyDeviceでも渡して pContext->SetPropertyとでもしておけばいいんでしょうか?
- 217 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 01:12:08 ]
- PCでパッド2個つけて2人用プレイって需要あるんかな
格闘ゲームでも1P vs COM か COM vs COMしか利用されないだろ
- 218 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 02:16:04 ]
- 家庭用ゲーム機のエミュとか?
- 219 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 09:15:32 ]
- abnormal.sakura.ne.jp/upfiles/2008/06/29/keiou.jpg
l i i i i l / ̄ヽ 昼l ゝ ノ ゝ ノゝ ノ , o ', 食ご l i´ `i _ i´ 講 `i `l レ、ヮ __/ べはl l / \ l 義 l l / ヽ よん.l {@ @ i が l l _/ l ヽ うを l } し_ / お しl i i l > ⊃ < わ l ート lヽ、 / l ヽ っ  ̄ ̄¨¨'~~ ‐‐‐--─| ヽ 、 / /l 丶 .l`\ た ____ __ | (_/ | } l`\| || |WC| | へ へ ヽ、 l ! \|| ||  ̄ ̄ |/ \ `ヽ、 ヽし! /|| ガタッ || | / / ヽ、|| ◎|| | / / ヽ、  ̄ ̄ ¨¨¨ー─‐‐--- ,,, __ ____ ,, _ |  ̄¨¨` ー──--- モパ / `、 | モパ |::::::::::::::: グク / ヽ | グク /  ̄ ヽ:::::モパ モパ./ ● ●l | モパ l @ @ l:::グク グク l U し U l | グク } し_ /::::モパ l u ___ u l | _ /=テ⊃ <_グク >u、 _` --' _Uィ l ◎ー)/キ' ~ \ヽ / 0  ̄ uヽ | | | | i二二二i-' ) ', . / u 0 ヽ| ~~~ ~ l ヽ--┬ ' ./ テ==tニト | / ̄/ ̄ ̄` ノ / / ̄) ̄ | ̄ ̄ ̄ ̄ ̄| | | |二二二)
- 220 名前:sage [2009/07/07(火) 18:55:08 ]
- >>216
pJoyDevice->EnumObjects は 第3引数で指定したフラグの情報が取得できる 例えば軸情報なら DIDFT_AXIS を指定すればいい。 ttp://msdn.microsoft.com/ja-jp/library/cc351884.aspx >BOOL CALLBACK EnumObjectsCallback( const DIDEVICEOBJECTINSTANCE* pdidoi,VOID* pContext ) 引数には DIDEVICEOBJECTINSTANCE オブジェクト と EnumObject で渡した第2引数 pContext がある。 コールバック関数で指定したフラグの情報を含む DIDEVICEOBJECTINSTANCE オブジェクトから pContext に情報を 引っ張ってくればいい。 ex) Joystick* pJoy = (Joystick*)pContext; if (pdidoi->guidType == GUID_XAxis) /* 処理 */
- 221 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 21:13:24 ]
- トイレでプログラミングはしても良くて助かった
- 222 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 21:32:50 ]
- 監視カメラ設置かよ
- 223 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 23:14:53 ]
- あれあれ?
俺ライブラリをVistaに対応する前にWindows7とかでちゃったw
- 224 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 23:30:55 ]
- これはどんな仕組みなの?
ttp://www.teatime.ne.jp/infor/tech48/page_02_01.htm
- 225 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 23:42:55 ]
- DirectXと関係ない宣伝行為乙
- 226 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 23:47:07 ]
- どう見てもDirectXだが
推奨環境 Vista 日本語版WindowsXP / Vista Intel(R)Core(TM)2 Duo プロセッサ 2.40GHz 以上 メモリ 以上 2.0GB 以上 DirectX9.0cに完全対応し ビデオメモリ256MB以上で ピクセルシェーダー2搭載の GeForceまたはRADEONシリーズ (メーカーから最新のグラフィック ドライバサポート必須) 画面解像度1280X960ピクセル フルカラー推奨 メインメモリと共有と表記のあるビデオシステムは動作保証外となります サウンド DirectSoundに完全対応したサウンドカード DVD-ROM 4倍速以上のドライブ HDD 5.0GB以上の空き容量
- 227 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 23:54:16 ]
- 224の仕組みとDirectXは関係ない。
OpenCVのスレにでも行けばいいかと。
- 228 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 01:44:18 ]
- てs
- 229 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 09:02:37 ]
- >>223
よう俺
- 230 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 09:16:19 ]
- 宇 宙 の 大 規 模 構 造
(太陽の∞倍)  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄∧ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 帝ハ神ナリ!帝ハ神ナリ! グ レ ー ト ウ ォ ー ル  ̄ ̄ `――(長さ:太陽の3500兆倍、幅:太陽の2100兆倍) __ , -―― ∧ 守るも攻めるも黒鉄の〜♪ _,,,,,,,,_ /` `'i、 超銀河団 | l <ゴミクズども氏ねよwwwww ゙l、 / `'ー---'" (太陽の約680兆倍〜) 銀河系 o <太陽?誰だよそれwwww (太陽の6800万倍) IRS5 。 <太陽?俺の国民だよ (太陽の10000倍) 太陽 . <たいようたいよう〜! (直径140万km)
- 231 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 11:44:25 ]
- カメラの使用はDirectShowの範疇でありDirectXではない。
- 232 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 14:56:39 ]
- DirectX9のフックについて、初心者向けの詳しいHPはありませんか?
当方、VC(++は少し苦手)、VB、Delphi分かります。dllのコンパイルも出来ます。 目標は、フルスクリーンの別アプリ画面に自前のグラフィックを描画することです。 レベルが低い質問かもしれませんが、よろしくお願いします。
- 233 名前:232 mailto:sage [2009/07/08(水) 15:02:38 ]
- 別アプリのhWnd取得と画像データの取得までは出来たのですが、描画の方が上手くいきません。
- 234 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 15:08:48 ]
- またおまえか
- 235 名前:デフォルトの名無しさん [2009/07/08(水) 15:12:14 ]
- 16と16の平たいを毎回敷き詰めて描くと
テクスチャに写植して描くはどちらが速いか?
- 236 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 15:19:37 ]
- 実測しろ
- 237 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 15:20:59 ]
- 日本語がおかしいが
敷き詰めて書くのが1回の命令で出来るならそっちの方がいいんじゃね? ただのループならWARP指定汁
- 238 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 16:18:32 ]
- >>234
やはり直接フックがベストですか! 有り難う御座いました。
- 239 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 17:23:37 ]
- 質問です。
カメラから見た時の、あるメッシュの「厚み」を調べる方法を考えています。 サイコロのような凸型物体ならば、 ・裏面を描画し、テクスチャAに深度値として書き込む。 ・表面を描画し、テクスチャBに深度値として書き込む。 とし、A-Bで厚みが出ると思います。 (深度バッファシャドウの時のように、深度値をz/wで0〜1にしてしまうと、歪んでしまうので単純にzを記録する必要がありますが) ただ、「コ」の字を上から見た時のような場合の厚み合計の出し方が思いつきません。 「コ」を真上から見た際、上辺の厚みと、下辺の厚みの合計が知りたいのです。 何か良い手はありますでしょうか?
- 240 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 17:34:02 ]
- >>239
表面/裏面と分けるのではなく、カリングを無効にした状態でZFUNCを LESSEQUAL、GREATEREQUALにして描画する。
- 241 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 17:39:32 ]
- >>239
加算合成すればいいのではない? 裏面のZ値の合計から表面のZ値の合計を引く 0〜1の範囲をはみ出ないようにしないといけないけれど
- 242 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 17:49:10 ]
- >>240
すいません、その結果何が解決するかがちょっと分からないのですが…。 一番奥であるポリゴンまでの距離が記録されるだけかと。 >>241 素晴らしいです! まさにその通りですね! (Af - An) + (Bf - Bn) == ((Af + Bf) - (An + Bn)) ということですね。 ありがとうございました。
- 243 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 18:31:47 ]
- 3Dゲームのプログラミングを始めようと思うのですが
オススメの書籍はありますか?
- 244 名前:240 mailto:sage [2009/07/08(水) 18:59:59 ]
- >>242
上辺の厚みと下辺の厚みの合計ってとこ見てなかった。 コが1枚ずつの面ってことじゃなくて、厚みのある凹ってことね。
- 245 名前:216 mailto:sage [2009/07/08(水) 19:25:37 ]
- >>220
EnumObjectsCallbackで何をやってるのかようやく理解できますた VOID* pContext に LPDIRECTINPUTDEVICE8 を渡して コントローラーごとに個別にプロパティが設定できるようになりました ありがとうござますた
- 246 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 19:27:41 ]
- >>243
DirectX逆引き大全500が鉄板だと思うが Googleのオンライン書籍立ち読みで見れるので見るといい
- 247 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 21:33:09 ]
- いまググって調べた。 東京12.960.883人の内、支那人149.113人だな。
堂々コリア人を抜いてる。 (09年5月調べ) 約、100人に1.15人いるんだな。
- 248 名前:デフォルトの名無しさん [2009/07/08(水) 22:49:17 ]
- 初心者ですが質問させてください。
現在DirectSoundを使った音声キャプチャプログラムを作成しています。 マイクやライン、サウンドミキサなどの入力先を指定してキャプチャを行いたいので 次の手順でキャプチャデバイスオブジェクトの作成を行っています。 手順1.DirectSoundCaptureEnumerate関数を使用して利用可能なデバイスを列挙 手順2.手順1で列挙したGUIDから任意の入力先のGUIDを選択し DirectSoundCaptureCreate8関数の第1引数に設定しキャプチャデバイスオブジェクトの作成 Vista環境では手順1のDirectSoundCaptureEnumerate関数で マイクやラインなど録音デバイスの項目に表示されている 入力先の数だけデバイスの情報が取得できて 入力先を選択してのキャプチャが実施できるのですが、 XP環境では1つのデバイスしか列挙できず入力先の指定が行えません。 (録音コントロールにはマイク、ライン入力など複数の入力先が表示されています。 録音コントロールで選択されている入力先の音しかキャプチャ出来ません。) XPでは入力先を指定してのキャプチャデバイスオブジェクトの作成は行えないものなのでしょうか? 不可能な場合は何か入力先を指定してキャプチャするよい方法はないでしょうか? よろしくお願いします。
- 249 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 23:44:16 ]
- Ring 3 Circus のDirect3D9 Hookingを改造して
Direct3D9を使ったゲームの画像を取得するプログラムを作ったんですが デバイス作成時にバックバッファをロック可能にするフラグを指定していないと バックバッファの内容が取得できないようです。 それでIDirect3DSwapChain9::GetPresentParametersを呼んで、 得られたD3DPRESENT_PARAMETERSのFlagsを flags |= D3DPRESENTFLAG_LOCKABLE_BACKBUFFER のように変更し、Resetを読んだら、HRESULTがD3DERR_INVALIDCALLに・・。 Resetはだめみたいです。 ランチャとか用意して、バックバッファをロック可能でデバイスを作成させるのは使うとき面倒です。 ほかにバックバッファの内容を取得する方法は無いんでしょうか
- 250 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 00:36:26 ]
- 取得しないといけない状況がまったく思いつかないので分からない。
- 251 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 00:45:51 ]
- IDirect3DDevice9::StretchRectでコピーすりゃいいんでないの
- 252 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 10:30:42 ]
- 質問です
パーティクル(たくさんのビルボード)を表現するのに DrawPrimitiveUP + D3DPT_TRIANGLELIST を使っています。 1つのビルボードを表現するのに6頂点。 100個なら600頂点のデータをDrawPrimitiveUPに渡す必要があるのですが、これが思いのほか遅い気がします。 パーティクルを表現するのに、DrawPrimitiveUPを使うのは常道なのでしょうか? DrawPrimitiveUPによって、メインメモリーからVRAMに転送するコストが大きいのが遅い原因かな?と思います。 ただ、パーティクルは移動なども毎フレーム行われるため、DrawPrimitive(UPではない)のほうでは実現が難しい気がします。 (結局は毎フレームStreamに流す作業が必要。これではVRAMへの転送コストは変わらない)
- 253 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 10:47:49 ]
- AGPメモリ
- 254 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 11:05:55 ]
- どんなパーティクルを想定してるのかわからないけど
6頂点のポリじゃなくて1頂点のポイントスプライトにしてみるとか そうすると制御が楽になるので簡単な飛び散りくらいなら 頂点シェーダで動かせるようにもなるし
- 255 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 11:16:33 ]
- >>252
ホントにDrawPrimitiveUPの呼び出しだけを計測してる? 頂点演算って毎フレームCPUにやらせると結構負荷かかるよ。 パーティクルの移動計算が幾何学的なものならシェーダーにやらせたほうがいい。
- 256 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 11:31:06 ]
- レスありがとうございます
>>254 ポイントスプライトも考えたのですが(ポイントスプライトで実装しているパーティクルもあるので)、 今回は頂点毎に違う方向を向いた法線が必要だった(疑似ボリュームパーティクル)ため、ビルボードにすることにしました 目指しているのは疑似ボリュームパーティクルによる煙表現です >>252 実験としてDrawPrimitiveUPに流し込む(FVFで定義した頂点フォーマットの)構造体を編集せず、描画し続けさせてみました。 ほぼ同等の速度のようです。 おそらくCPUパワーはほとんど足を引っ張っていないかと思われます。
- 257 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 11:43:31 ]
- >>256
TriangleStripなら4頂点で済むよ。 DirectXのバージョンが分からんが、たぶんヘルプに「動的な〜」頂点バッファ処理云々の項があって そこにDrawPrimitiveで、頂点位置が毎フレーム変わるようなものの処理の仕方が書いてあるはず。 簡単に言えば、頂点バッファを確保して、後は毎フレームに バッファをロック>書き込み>一杯になったらアンロックしてDrawPrimitive>再度バッファを… 更にインデックスバッファを使ってTriangleStripにすれば、転送コストはかなり違ってくるわよ。
- 258 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 11:49:37 ]
- Stripじゃ縮退ポリゴンで2頂点増えるから、減らないだろう。
- 259 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 11:57:46 ]
- バッファをロックするんじゃ、結局遅いと思うが
- 260 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 12:10:23 ]
- インデックスは毎回転送する必要がないから、流すデータ量は減るんじゃないか
- 261 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 12:17:30 ]
- 微妙な即レスが続いて、なんか答えるのが馬鹿馬鹿しくなってきたが
>>258 2通りにとれるな。もう少し理由を言ってみ。縮退ポリなんか使わんよ。 >>259 今時そんな…ではDrawPrimitiveUPはどうやってVRAMに送ってるんだ? ロックとDrawは極力まとめるんだ。まぁ、UP系もそれなりに上手くやってくれるけど。 確かLunaの作者が昔実験結果を掲載してくれてたけど、今はなくなっちゃったみたいだな。
- 262 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 12:45:15 ]
- スプライトって全部板なんだから頂点情報ひとつで十分だろ
- 263 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 12:49:55 ]
- >>261
縮退ポリゴンを使わずに、複数のビルボードをStripで描画するってどうやるの?
- 264 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 12:55:40 ]
- >>261
いまどきそんな。とか言ったって、DrawPrimitiveUPより早くならなきゃ質問に答えたことにはならないんだぜ? しかも今回は、毎フレーム1回しかUPを呼び出さだないわけだし、どうやってUP以上に「ロックとDrawをまとめる」んだよ?
- 265 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 13:01:22 ]
- >>263-264
ごめんなさい 俺こそが質問者の質問をよく読んでない、ただの馬鹿馬鹿しい男でした
- 266 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 13:07:44 ]
- ちゃんと自分の間違いを謝れる奴は、伸びる奴
- 267 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 13:10:27 ]
- >>256
そこまで試したならついでに、静的なVertexBufferに頂点データ入れてみて 本当に転送が問題なのかも確かめた方がいいかと。
- 268 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 13:15:57 ]
- /j^i
./ ;! / /__,,.. / `(_t_,__〕 / '(_t_,__〕 / {_i_,__〕 / ノ {_i__〉 / _,..-'" / / 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
- 269 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 13:23:51 ]
- だから動的更新ならAGPメモリ使えよ。
- 270 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 13:40:13 ]
- >>263
インデックスバッファ >>264 まず>>259でロックが遅いなんて書くから、UPでもロックのコストは変わらないと書いた。 「動的な〜」の項読んでみろと。>>253氏のも乗ってたはず。 で更にUP系でIB使うと、毎回IBの転送が起こるよな? ところが非UP系ならば初期(或いはVBサイズ変更時のみ)コストだけで済む。 で、更に頂点数の転送量は2/3に抑えられる。 もう少しいうと、DrawPrimitiveUP系の場合、計算用のアクセスしやすいバッファの他に、 描画用の配列をメインメモリに取って、更にVRAMにも同じのが出来るわけだ。無駄だと思うがねぇ。 まぁ、好きに実装したらいいじゃないの。なんでそんな必死よ>>265-266
- 271 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 13:43:23 ]
- >>252がDrawPrimitiveUPを連投してるなら
それをまずやめるべき。 >>257方式で、まとめるのが一番良い方法だろうな。 余力と環境があるなら、ジオメトリインスタンシングも 試して欲しいところだが。
- 272 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 14:06:50 ]
- 結局「縮退ポリゴンを使わずに、複数のビルボードをStripで描画する」方法の説明がないわけだが
- 273 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 14:11:03 ]
- インデックスで縮退用のを適当に一枚かますってことか
それでなくてもDrawPrimitiveUPにこだわる人は、 描画数増えたときどうするんだろ?
|

|