鬱だ氏のう DirectX (Part 7)
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
02/12/10 17:34ID:tkEwMMYm初心者用相談室では扱わないような少し高度な話題も受け持つ。
■ 過去スレ
Part 1 http://piza.2ch.net/tech/kako/966/966655286.html (プログラム板)
Part 2 http://pc3.2ch.net/test/read.cgi/tech/997101556/ (プログラム板)
Part 3 http://game.2ch.net/gamedev/kako/1005/10051/1005119775.html
Part 4 http://game.2ch.net/gamedev/kako/1016/10162/1016276254.html
Part 5 http://game.2ch.net/test/read.cgi/gamedev/1027351925/
Part 6 http://game.2ch.net/test/read.cgi/gamedev/1033920036/
0005あぼーん
NGNG0007名前は開発中のものです。
02/12/10 22:41ID:Yh8uDVWNM$のあの人が降臨して噂? 電波? まき散らしてます。DX9も。
0008名前は開発中のものです。
02/12/10 23:16ID:4d7wQ+to0009名前は開発中のものです。
02/12/11 00:11ID:JGGuGsUVIDirectMusic8::EnumPort
関数じゃなくてメソッドだ罠
0010名前は開発中のものです。
02/12/11 00:45ID:nElzBzIFデバイスの設定が初期化されてんじゃないの?
具体的に何かは忘れたが、再設定してやらないといけなかったと思う。
識者よろしく
0011あぼーん
NGNG0012名前は開発中のものです。
02/12/11 08:15ID:4B0/2BCo2chブラウザによっては、リンク先のスレッド名を取得するのでバレバレというのをご存知か?
0013名前は開発中のものです。
02/12/11 18:13ID:dYtn0SwMなぜDirectXは多くの場面でfloatを使うのでしょうか?
使用メモリ量の関係ですか?
0014名前は開発中のものです。
02/12/11 18:27ID:tvq6Mbgl001513
02/12/11 18:42ID:dYtn0SwMそれはVisualC++には当てはまらないのですか?
0016名前は開発中のものです。
02/12/11 19:00ID:8GcUuocMコンパイラ依存ではなく
アーキテクチャ依存だと思われ
0017名前は開発中のものです。
02/12/11 19:15ID:2vYAZWWISSE,3DNowのためかと思ってたけどよく知りません
0018名前は開発中のものです。
02/12/11 19:19ID:2vYAZWWI>float型の演算は内部でdoubleにキャストしてから
コプロ(内蔵してるが)使用するときはその様な感じになってると
聞いたことがあるような気がするがよく知りません
001916連続投稿スマソ
02/12/11 19:20ID:8GcUuocMメモリから取り出すデータ量が減ったほうが効率がいいんじゃないかな?
0020名前は開発中のものです。
02/12/11 20:14ID:frs86VqQたしかにfsinfとかの関数をおってくと
floatでキャストしただけになってて最適化なんてやってくれそうもない。
0021あぼーん
NGNG0022名前は開発中のものです。
02/12/11 22:26ID:wIFL56Ncfloat vx = sin(3.141492 * dir)l;
↑これにはfloatからdoubleへの暗黙のキャストが隠れている。
それを避けたければこう。↓
float vx = sinf(3.141492f * dir);
0023名前は開発中のものです。
02/12/11 23:18ID:5cp9RTbD0024あぼーん
NGNG0025名前は開発中のものです。
02/12/12 00:20ID:b6a4sQZk> だからそれってさあ、デバッガでおってくと強引にfloatでキャストしてあるだけだよ。
それは最適化なしの場合だろ。
最適化ありだとFPU命令になるだけで
そもそも関数呼び出しにならないよ。
22 の場合もどっちも同じ命令にコンパイルされる。
0026名前は開発中のものです。
02/12/12 00:23ID:E1h2ul2n0027あぼーん
NGNG0028あぼーん
NGNG0029あぼーん
NGNG003013
02/12/12 10:27ID:YYFVkYo6安心してfloat使ってよいと言うことですね(最適化ありで)。
ありがとうございました。
ソボークな疑問なんですけど、floatとFLOATって何か意味が違うんですか?
違いはなくても意味があって大文字のものと小文字のものがあるんですか?
0031あぼーん
NGNG0032名前は開発中のものです。
02/12/12 10:32ID:Hn1bHLmYヘルプ嫁
0033あぼーん
NGNG0034名前は開発中のものです。
02/12/12 11:21ID:smOf7KP3ガセ?マジ?
0035あぼーん
NGNG0036あぼーん
NGNG0037あぼーん
NGNG0038あぼーん
NGNG0039王様
02/12/12 17:08ID:27oI7cTXソフトウェアのすばらしいサテンは、明日その心臓にある慈悲を感じて、そしてついにDirectX 9のための苦しめる待機を終えて、そしてそれを発表しそうです。
3つのベータと2人の解放候補者の我々がゆっくり見たバージョン、と確かにそのDirectXで、9は、本物のより幸福ないくつかの会社を助けて、そしてDirectX 9人の運転手を解放するだろう充分に羽がでるまで育てられた鳥になるところです。
それを支える唯一のカードを現在送ることは、Radeon 9700および9500のプロとアマチュアです、そして、それは多くがクリスマスツリーのもとできらきら輝いているのを見つけるでしょう。
Nvidiaは、本当に、そのDirectX 9支持者を贈りました、Geforce FXしかしこのカードは、大量に2月ほどにはすぐに利用できないでしょう。
ATIは、それが公式に発表されると同時に、彼らが9月と彼らが彼らの顧客にDirectX 9の全面的支援をもつフリーのドライバーを提供するだろう今の最終版からのDirectX 9ハードウェアを出荷しているので、誰より先にこれから利益を得るでしょう。
ATIは、9700および9500の世代のためにRC0にDirectX 9、そのファンシーなデモとドライバーのバージョンをすでに提供していて、しかし、約1日で、それは、その揺れ動いている役割の用意ができている最終の1があるでしょう。
開発者は、ついに彼らが遊ぶことができる本当のAPIを持つでしょう。μ
0040名前は開発中のものです。
02/12/12 21:46ID:Qr4JjMmi>運転手を解放
ハイジャックかよ!
0041名前は開発中のものです。
02/12/13 00:43ID:1uA3wOfSマジであってほしい・・・
そうならRadeon9700買う。
0042名前は開発中のものです。
02/12/13 00:43ID:1uA3wOfSやっぱりバランス取ってるのね。
0043名前は開発中のものです。
02/12/13 14:38ID:7xJaeg/ehttp://www.fraps.com/
みたいに、他のDirectXソフトの画面に他アプリケーションが
重ね描きするのって、どうやればいいんでしょう?
どなたか、キーワードだけでも知らないですか?
0044あぼーん
NGNG0045名前は開発中のものです。
02/12/13 21:52ID:mZ92GDESマチクタビレタ〜
☆ チン 〃 Λ_Λ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(\・∀・) < DX9まだー?
\_/⊂ ⊂_ ) \_____________
/ ̄ ̄ ̄ ̄ ̄ ̄ /|
| ̄ ̄ ̄ ̄ ̄ ̄ ̄| |
| .佐賀みかん. |/
0046名前は開発中のものです。
02/12/14 00:28ID:bU5z0g+912日付けで結構引っかかるな。
0047名前は開発中のものです。
02/12/14 17:31ID:1VN/aEFO( ´,_ゝ`)プッ
0048あぼーん
NGNG0049名前は開発中のものです。
02/12/14 22:03ID:NabTMAnAそれもあるが、プロセッサに載ってる命令セットの問題もある。
3D 演算では行列・ベクトルが多用されるわけだが、この処理を高速化するため
に載ってる命令が、単精度浮動小数点 * 4 の 128bit データを前提としてる。
IA-32 でも PlayStation 2 でも、この手の SIMD 命令を使う演算ユニットと、汎用
の浮動小数点演算用コプロセッサと両方持ってるんだが、行列演算では前者を
使わんと性能が一桁落ちる。
005016
02/12/14 22:32ID:S4SiGzG1ふと思ったんだけど、これって
for(int i;i<=1000000:i++,f++);
とかの命令を実行したとき、
fはfloat型よりもdouble型のほうが速いってことを言ってるんじゃないかな?
これだったらレジスタでバリバリ計算できるからメモリ読み出しは皆無
だからネイティブなdoubleのほうが速いんじゃないかな?
こういうことはあんまり詳しくないので詳しい人、解説きぼんぬ
005116
02/12/14 22:33ID:S4SiGzG1とんでもなく恥ずかしいコードだ
int i=0でよろ
0052名前は開発中のものです。
02/12/14 22:41ID:opMbyaXl0053名前は開発中のものです。
02/12/15 00:49ID:JrJSKr2Y> だからネイティブなdoubleのほうが速いんじゃないかな?
ネイティブなdoubleってのがよくわからんのですけど
float も double もアセンブラレベルでは同じなんで
速さも変わらんでしょ。
逆にメモリへの読み書きが double の方が倍多くなるんで
double 使った方が遅くなるかも。
49 のとおり SSE やグラフィックボードも32ビット浮動小数点なんで
DirectX やるなら普通は float 使ってどうしても精度が問題になるときだけ
double にすべきでしょ。
0054名前は開発中のものです。
02/12/15 01:59ID:QBp3zywpから速くなるんだろ。
DX7の頃はヘルプにもっと詳しく書いてあったんだが、DX8ではほとんど
説明が無くなってる。
005549
02/12/15 02:23ID:GQA1dSUc> だからネイティブなdoubleのほうが速いんじゃないかな?
x87 FPU のレジスタは 80bit だから、レジスタ内部の型と一致するのは double
ではなく long double です。(型と内部表現の関係は厳密には処理系依存だけ
ど、大抵の IA-32 向け処理系では float = 32bit, double = 64bit, long double =
80bit としてる)。
ただ x87 ではメモリ上のビット表現の如何によらず、レジスタ・メモリ間でデータ
転送する際に「ハードウェアによって」型変換されます。この型変換のコストはゼ
ロですから、float でも double でも差はありません。
あと x87 を使う際に厳しいのは、レジスタの数が 8 本と少ないことと、スタック
アーキテクチャを採っているのでコンパイラによる最適化が利きにくいこと。
レジスタ 8 つといったら同次ベクトル 2 本で既に溢れてしまうわけで、計算以前
にメモリとのロード・ストアに忙殺されることになります。
0056名前は開発中のものです。
02/12/15 04:00ID:JrJSKr2Y> メモリアクセスもあるが、それよりもFPUを単精度モードに固定する
> から速くなるんだろ。
DirectX では単精度モードに固定はしてないよ。
FPUレジスタサイズと同じ拡張倍精度のままだよ。
単精度モードにしても内部では拡張倍精度で計算されて
丸め精度が単精度になるだけなんで速くなるとは思えない。
あとVisualC++だと double も long double も 64bit なんで
レジスタと一致する型はないですね。
0057名前は開発中のものです。
02/12/15 09:08ID:QBp3zywpDirect3Dはデバイスを作成したときにFPUを単精度モード、FPU例外無効に
設定する。デバイス作成前と後で計算結果が変わるという報告もあるから、
これは間違いないかと。
たぶんD3DCREATE_FPU_PRESERVEを指定しないでデバイスを作成した後に
doubleを使ってもdoubleの精度では計算されていないと思う。
Direct3DはFPUの状態がデバイス作成時から変わらないことを前提に最適化
されているから、doubleを使うときはD3DCREATE_FPU_PRESERVEを指定するか
自分でモードを切り替える必要がある。
D3DCREATE_FPU_PRESERVEを指定すると、Direct3Dの関数呼び出しの前後で
FPUの状態を同じに保つようにするから、それがパフォーマンスに影響する。
…というのがMSの説明。
_controlfpとか使って手動で切り替えればいいのかも。
005856
02/12/15 15:59ID:TrKuLw0Bすいません、今確認してみたらたしかに単精度モードでした。
なんか DirectX とは関係ないライブラリの初期化時に
で倍精度モードに書き換えられてた。
CreateDevice 直後に見たら単精度モードでした。
でも Pen4 で実測してみたんだけど
単精度/倍精度に関係なくFPUの計算速度は同じだった。
Pen4 以前の CPU だと速くなったりするんですかね?
0059名前は開発中のものです。
02/12/15 18:30ID:/qOF98KW0060名前は開発中のものです。
02/12/15 18:54ID:T3iOSbyzデバイス作成した後にDLLをロードするとリセットされるよ。
速度はFPUのモード切り替え以外ではほとんど差がないんじゃない?
三角関数なんかは精度によって速度が変わるかもしれないが。
006156
02/12/16 00:05ID:LbANvt5GFPU 使ってなさそなやつだったんで
何でモード変えちゃってるか疑問だったんだけど
DLL ロードでリセットされるんですか。
納得です。
0062名前は開発中のものです。
02/12/16 10:35ID:QrSABSJY006356
02/12/16 13:07ID:lLWQwiGlfdiv だとたしかに速度変わりますね。
しかも微妙にじゃなく結構豪快に変わった。
fmul と fsin しか調べてなかったよ・・・
0064名前は開発中のものです。
02/12/17 04:03ID:rBdu6F04The new "final date" is 19th of December,
http://www.theinquirer.net/?article=6744
0065名前は開発中のものです。
02/12/18 18:56ID:qPtEvAdZその文章を抜粋すれば ()の中身は文章をわかりやすくするため漏れが付け加えました
>・floatの計算
>以前(ANSI C以前のC)はfloatはdoubleに変換されてから計算されていましたが、
>直接計算されるようになりました。
>そのため必要とする精度が少ないない場合は float を使った方が高速になりました。
↑なんだけど、doubleのほうが早いって言うのはANSI C以前のCについての記述じゃないかな?
漏れは詳しくないから良くわかんないんだけど、知っている人おしえてくらはい。
ソースはここ
ttp://member.nifty.ne.jp/Ryuz/c/about_ansi.html
0066名前は開発中のものです。
02/12/19 09:42ID:+qpAae3H講座ページ見つけたんですが
そこのサンプルを実行しても
「初期化に失敗しました」になってしまいます。
その原因がどうしてもわからないので
ご協力ください。
ttp://www.roy.hi-ho.ne.jp/pastel/home/index.htm
↑
講座ページ
ttp://www.roy.hi-ho.ne.jp/pastel/home/DirectX/DX8_kouza/HelloDX8.zip
↑
サンプル
ちなみにVC++6 DirectX8.1を使っています。
0067あぼーん
NGNG0068名前は開発中のものです。
02/12/19 14:38ID:dDMU8wxmCreateDevice判定を1回しかしてないので環境によっては失敗するのでは?
まあ、俺もDX8の勉強初めて一ヶ月ほどなんでえらそうな事は言えないが。
一応サンプル上げときます。
へっぽこソースだけど、よかったら眺めてやってくださいな。
ttp://www10.ocn.ne.jp/~kc39fgax/DirectX8_SKL.zip
0070名前は開発中のものです。
02/12/21 00:21ID:H0pabYy8ttp://msdn.microsoft.com/library/default.asp?url=/downloads/list/directx.asp
興奮のあまり、旧スレに書いてしまったぜい。
誘導してくれた人、アリガトン。
0071名前は開発中のものです
02/12/21 04:40ID:aw46BnhUナイス
休みの暇つぶしが できそうだYO
0072名前は開発中のものです。
02/12/21 10:57ID:BdqHu3/h具体的にはDirectMusicPerformance8::CreateStandardAudioPathが失敗するようになった。
戻り値は0x88781226で、意味は
「パフォーマンス チャンネルがIDirectMusicPerformance8::AssignPChannel を使ってセットアップされたので、
パフォーマンスはオーディオパスをサポートできない。 」
なんだそうだ。しっかし、AssignPChannelを使った覚えはなく、自分のソースを検索しても見つからない(使っていない)
第一、今まで正常に動いていたのが動かなくなる理由にはならないし、
使い方が間違っていて偶然動いていたにしては、戻り値が明らかにおかしいし。
同じ症状の人いませんか?解決策はありますか?
このままだと今まで作ってきたソフトが全滅してしまうのです・・・
007372
02/12/21 11:22ID:BdqHu3/h(\samples\Multimedia\DirectMusic\Tutorials\Tut2)
サウンドデバイスはUSBオーディオだからドライバもクソもないし・・・
こ・・・こりはDirect X9のせいにしてもよかですか?
0074名前は開発中のものです。
02/12/21 11:35ID:eiYZ1q8i0075あぼーん
NGNG0076名前は開発中のものです。
02/12/21 15:13ID:f6s/Xm4R0077名前は開発中のものです。
02/12/21 15:18ID:0+pehiHAで、質問なんだがD3DってXファイル以外使えないの?
環境:Visual C++.net
Windows 2000 SP3
0078名前は開発中のものです。
02/12/21 15:29ID:WU56vZJBいいえ、そんなことはないですよ。
ただXファイルなら読みこむ関数が用意されているので楽なのです、
ちなみにその関数はD3DではなくてD3Dを使いやすくするための付属ライブラリの
D3DXについてます。
市販ソフトや良く出来たフリーソフトは
独自形式データ&独自の読みこみルーチンが一般的です。
0079名前は開発中のものです。
02/12/21 15:33ID:0+pehiHAなるほど、だから市販のソフトにはXファイルがないのか。
しかし、モデリングとかはどうするのかな?自分でプラグインとかをつくるの?
0080名前は開発中のものです。
02/12/21 15:36ID:WU56vZJBモデラーからフォーマットが公開されている形式で出力させる
↓
独自フォーマットへ
っていうコンバータ作るのが一般的かな?
0081名前は開発中のものです。
02/12/21 15:39ID:0+pehiHAありがとうございますた。最初はXファイルでやってみて実用的になったら
独自形式の方法もやってみます。
0082名前は開発中のものです。
02/12/21 15:46ID:CgoKZUqkどうせ使うつもりないけど、下手にC++にこだわって泥沼に入ってる
オレみたいなのには脅威かも。
0083名前は開発中のものです。
02/12/21 16:13ID:i7W/82mbXPでも動くの?C++ 6.0は?
0084名前は開発中のものです。
02/12/21 16:29ID:0+pehiHAC++とどっちが速いですか?
メモリ使用量も気になるが。
0085名前は開発中のものです。
02/12/21 16:52ID:f6s/Xm4R.\ オオオオオオ―――――ッッッッッ . /
\. /
(゚∀゚) (゚∀゚) (゚∀゚) (゚∀゚) (゚∀゚) (゚∀゚) (゚∀゚) (゚∀゚) (゚∀゚) (゚∀゚)
(゚∀゚)(゚∀゚)(゚∀゚)(゚∀゚)(゚∀゚)(゚∀゚)(゚∀゚)(゚∀゚)(゚∀゚)(゚∀゚)
(゚∀゚)(゚∀゚)(゚∀゚) (゚∀゚) (゚∀゚) (゚∀゚) (゚∀゚) (゚∀゚)(゚∀゚)(゚∀゚)
(゚∀゚) (゚∀゚) (゚∀゚) (゚∀゚) (゚∀゚) (゚∀゚) (゚∀゚) (゚∀゚) (゚∀゚) (゚∀゚)
( ゚∀゚)( ゚∀゚)( ゚∀゚ )( ゚∀゚ )( ゚∀゚ )( ゚∀゚ )( ゚∀゚ )( ゚∀゚ )(゚∀゚ )(゚∀゚ )
.( ゚∀゚)( ゚∀゚ )( ゚∀゚ )( ゚∀゚ )( ゚∀゚ ) ( ゚∀゚ )( ゚∀゚ )( ゚∀゚ )( ゚∀゚ )(゚∀゚ )
( ゚∀゚ )( ゚∀゚ )( ゚∀゚ )( ゚∀゚ )( ゚∀゚ ) ( ゚∀゚ )( ゚∀゚ )( ゚∀゚ )( ゚∀゚ )( ゚∀゚ )
────────────────────────────────
じゃぁ、C#でDirectXを始めよう!!
0086名前は開発中のものです。
02/12/21 17:52ID:cUrNSFms0087名前は開発中のものです。
02/12/21 20:16ID:n7PDff7R同感。
でも重くなる部分はunsafeで書けば何とかなるんじゃないかなぁ
と言ってみるテスト。
http://www.atmarkit.co.jp/fdotnet/csharp_abc/csharp_abc_021/csharp_abc05.html
0088名前は開発中のものです。
02/12/21 22:18ID:1u4LlFCSC#をunsageで使うぐらいならC++のほうがらくだ
0089名前は開発中のものです。
02/12/21 23:18ID:qv5/NQ3kMicrosoft.DirectX.DirectDraw.DrawEffects の項目を見てて、
相変わらずDirect Drawでα値を使えるみたいなこと書いてあるんだけど、
別に、使えるようになったわけじゃないんだよね?Direct Xの本体はおんなじ物なんだよね?
0090名前は開発中のものです。
02/12/21 23:55ID:BzlxTchV0091名前は開発中のものです。
02/12/22 00:11ID:VTU8yluMグラボの方のサポートも怪しくなってきそうだし。
0092あぼーん
NGNG0093名前は開発中のものです。
02/12/22 06:16ID:YI0WQzNU終
0094名前は開発中のものです。
02/12/22 09:59ID:6B/yK4Zz終了
0095Jumper⌒Y⌒Y⌒( ゚∀゚) ◆JumpZrpgkU
02/12/22 10:02ID:/sB53JfV−−−−−−−−−−−−−−−−−−−−
次のキーワードは未使用だが、予約されている。
asm* bool compile const
auto break case catch
char class const_cast continue
default delete dynamic_cast enum
explicit friend goto long
mutable namespace new operator
private protected public register
reinterpret_cast short signed sizeof
static_cast switch template this
throw try typename union
unsigned using virtual
−−−−−−−−−−−−−−−−−−−−
なんかclassとかありますな。
今のとこ使えないようだが、
シェーダもオブジェクト指向で書けるようになるわけですか。
シェーダプログラムの拡張がしやすくなってウマー…なのか?
0096名前は開発中のものです。
02/12/22 10:14ID:rCjzYQTs0097名前は開発中のものです。
02/12/22 10:20ID:6B/yK4Zzどうするの?
0098あぼーん
NGNG0099名前は開発中のものです。
02/12/22 12:54ID:6B/yK4Zz他にまともなDirectXのBBSありますか?
0100名前は開発中のものです。
02/12/22 13:09ID:tpBxr2+C前から思っていたが、なんでこのすれは終わるんですか?
0101名前は開発中のものです。
02/12/22 13:10ID:6KQt+AoQdirectxで検索してみればあるでよ。
荒らしてるヤシはpcゲーム作りたいのだが、オカネが無い、
担当させてもらえない、技術ガナイ、英語が読めない、
リストラされて荒れてるだけだから、、、許してやってね。
0102あぼーん
NGNG0103名前は開発中のものです。
02/12/22 16:14ID:mBDSZwTf実はプログラム技術板にもDirectXスレがあったり…
鬱だ氏のう DirectX 2
http://pc3.2ch.net/test/read.cgi/tech/997101556/l50
0104あぼーん
NGNG■ このスレッドは過去ログ倉庫に格納されています