鬱だ氏のう 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/
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あぼーん
NGNG0105名前は開発中のものです。
02/12/22 17:22ID:sSsEI5R3テクスチャを使うと背景画像やキャラ画像が512x512になってしまいます。
やはりサーフェイスを使うべきでしょうか?
DirectX8のスプライト機能は重いって聞くけど、
ポリゴンにテクスチャを貼るようにしたほうがいいのでしょうか?
0106名前は開発中のものです。
02/12/22 17:37ID:IeNHUVjA後は7以前で組むとか。
0107名前は開発中のものです。
02/12/22 17:47ID:ab12EPgU0108名前は開発中のものです。
02/12/22 18:01ID:sSsEI5R3DX8の2D系はあまり良くないみたいですね。
もう少し弄ってみてダメそうなら諦めます。
>>107
DX9はまだ触ってないのでなんとも言えません。
触るのはもうちょと先ですね・・・
0109名前は開発中のものです。
02/12/22 19:06ID:Zc9XiYaJ7なら大抵の環境で動くしな。1年後くらいに9に移行する。
0110名前は開発中のものです。
02/12/22 20:55ID:O6Yda65i0111名前は開発中のものです。
02/12/22 23:33ID:3R93okVP抜き出して、メッシュを表示しながらそれらを編集するプログラムを作って
います。
D3DXLoadMeshFromXofでメッシュを作ると、そのメッシュXfileDataの中に
あるマテリアルリストのデータやメッシュノーマルのデータ等の子データが
GetNextObjectで取得できなくなってしまいます。先にその子データを取得すると今度は
D3DXLoadMeshFromXofの方でエラーがでるため、多分この関数内でGetNextObjectを
やっているのだと思います。そのせいでこの関数が子を取得するとこのメッシュデータ
の子を自分で取得できなくなる、という風に考えているのですが、どうにかして
GetNextObjectでの子オブジェクトの参照カウントを元に戻す方法ってありますか?
AddrefやReleaseをしてみても何も変化はないです。教えて下さい。
0112111
02/12/22 23:36ID:3R93okVP>D3DXLoadMeshFromXofの方でエラーがでるため
間違えました。エラーはでないのですが、マテリアルリスト等の子データを
持たないメッシュができてしまい、表示がおかしくなります。
0113あぼーん
NGNG0114名前は開発中のものです。
02/12/23 13:40ID:NO9DtWWSManaged DirectX(C#とVB.NET)にはないんだろう。
単に省略しただけなのか、使えない理由があるのか。
0115名前は開発中のものです。
02/12/23 15:55ID:EfpKXfeuあまりに遅くて泣く泣く削った… では無い事を祈る。
0116名前は開発中のものです。
02/12/23 16:11ID:qFc82hVW0117114
02/12/23 23:44ID:NO9DtWWSまー、たいした理由でないといいですな。
0118名前は開発中のものです。
02/12/24 01:15ID:JJdtC4Utやつらは3Dがやりたいんであって、C#やVBは上からのお達しで
仕方なくやってるdake
0119名前は開発中のものです。
02/12/24 04:52ID:U9xcR896数のサンプルを用意してきた事に驚いたけど。
本音を言うと、C#のサンプルなんか用意するよりもD-MAPやMRTのサンプルを
作って欲しいんだが。毎度のことだけど、売りであるはずの新しい機能の
サンプルが無いんだよな。
0120名前は開発中のものです。
02/12/24 06:10ID:IMP3us1SDX9落としたんだけど、サンプルがコンパイル出来ません。
UINTPTRが未定義とか言われる。
basetsd.hてのに宣言されてるけど、エラー出ていてるヘッダファイル
D3D9.h(かな?)には、#includeそのものがない。
どうなってるんでしょうか?
同じエラー出た人います?
(オプション>ディレクトリのパスは通してます(C:\DXSDK\include))
0121名前は開発中のものです。
02/12/24 06:18ID:6zRcQ9qZそのディレクトリの検索順は一番上にageてあるか?
0122名前は開発中のものです。
02/12/24 12:23ID:RrtXDOZR0123名前は開発中のものです。
02/12/24 20:46ID:CjExnJI6テクスチャサイズは2の累乗にしなくちゃいけないんじゃなかったっけ?
0124名前は開発中のものです。
02/12/24 20:51ID:8FHlCXa70125名前は開発中のものです。
02/12/24 22:14ID:sve9Duu3DX8から部分的にサポートされてるよ
ただし利用方法が激しく制限されてるので
2^nの一部を使ったほうがまだマシ
0126名前は開発中のものです。
02/12/24 23:39ID:wBChHQUXどこが激しいのか疑問。
ミップマップ以外は制限とは言えない程度のささいな事じゃん。
2^nであってもCLAMPにしたらテクスチャラッピングは使えないから、
実質的に制限は2つだけ。
0127名前は開発中のものです。
02/12/24 23:54ID:sve9Duu3使ったことないのに無理しないで。
あとサポートしてる環境を把握してる?
0128名前は開発中のものです。
02/12/24 23:58ID:nM8z+tpm痛い香具師ハケーン
0129名前は開発中のものです。
02/12/25 00:28ID:5yYW1Zioそういう自分こそ使ったことない&把握してないのでは?
あの制限のどこが問題になるのか説明してくれる?
0130名前は開発中のものです。
02/12/25 00:41ID:o5sX+mEC戻らないのですが、元に戻すには何かしなければいけないのですか?
0131名前は開発中のものです。
02/12/25 00:56ID:C+V8gp8bResetが必要なんではないか。
詳しくはサンプルを参照。
0132名前は開発中のものです。
02/12/25 01:06ID:loF3ndqX0133名前は開発中のものです。
02/12/25 01:23ID:MT7gu6YF0134名前は開発中のものです。
02/12/25 03:30ID:PtOPqJI+D3Ddevice 作り直さないとだめなのよ〜ん(タブン)
0135名前は開発中のものです。
02/12/25 03:44ID:Km2eVg0y0136あぼーん
NGNG0137名前は開発中のものです。
02/12/25 07:41ID:BoDn9JVh10 DEFINT A-Z:SCREEN 3,0,0,1WIDTH 80,25:CONSOLE 0,25,0,1:CLS 3
20 device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, presentParams);
30 RELEASE(device);
0138あぼーん
NGNG0139名前は開発中のものです。
02/12/25 10:23ID:vBfJXHZbBBXも野郎BBSも閉鎖だし、ここはこんな風だし…
日本のアマチュアゲーム開発は終了だな。(´・ω・`)ショボーン
■ このスレッドは過去ログ倉庫に格納されています