トップページgamedev
1001コメント376KB

DirectX総合スレ (Part6)

■ このスレッドは過去ログ倉庫に格納されています
0001DirectX62006/11/17(金) 00:38:52ID:lRjOsWKq
言語はC++
他の言語使ってる奴はいますぐ消えろ

■過去スレ

DirectX総合スレ
Part 1: http://pc5.2ch.net/test/read.cgi/gamedev/1083728025/
Part 2: http://pc5.2ch.net/test/read.cgi/gamedev/1095863432/
Part 3: http://pc5.2ch.net/test/read.cgi/gamedev/1105333209/
Part 4: http://pc8.2ch.net/test/read.cgi/gamedev/1132937938/
Part 5: http://pc8.2ch.net/test/read.cgi/gamedev/1157727402/
0793名前は開発中のものです。2007/04/23(月) 10:39:58ID:0pWNIKTQ
DirectX関連の本は大抵、説明をわかりやすくするために
わざとハードコーディングのサンプルを載せてるものが多いと思うんだが。
とかなんとか書いていたら>>788が1〜2行目で言ってるじゃないかorz
0794名前は開発中のものです。2007/04/23(月) 12:52:06ID:7FTd6465
>>792みたいな奴がイチイチ状況を理解せずに文句を言うから、
アメリカのマニュアルみたいに最初に注意書きをいっぱい書いておけば良いんだよ。
生き物は乾燥させられません、説明用にコーディングしているため最適なコードではありませんと。
0795名前は開発中のものです。2007/04/23(月) 13:49:46ID:J3HGZUDO
分かりやすくなっているのなら良いけど、>>788の本に限って言えば
特に分かりやすくなっていなかった。(だから「無駄に」って書いた)

その本とDirectX SDKのサンプルやMSDNの記事を両方を読んでみて
SDKのサンプルやMSDNの記事の方が分かりやすかったし、役にも立った。
0796名前は開発中のものです。2007/04/23(月) 14:26:03ID:OWFbmL7a
そりゃSDKサンプルとかMSDNの方が分かりやすいとは思うけども、やっぱ本は必要だよ
画面小さいといちいち窓切り替えて見比べたりしづらくて、うがー、ってなる
あと暇なとき寝ながらでも読んでいられるし
0797名前は開発中のものです。2007/04/23(月) 15:00:28ID:tsYZMPWC
WUXGA+UXGAの環境だと
窓を切り替えたり画面小さくしたり
することに逆に憧れる
0798名前は開発中のものです。2007/04/23(月) 20:34:58ID:VAXcyTmS
環境は人それぞれ


ゲーム作って実感しましたorz
0799名前は開発中のものです。2007/04/27(金) 15:48:01ID:n7RHrMRn
エグゼクートバッハー復活希望。
0800名前は開発中のものです。2007/04/28(土) 00:58:45ID:Z/Gf1X1D
外人のコミュニティで言って来い
0801名前は開発中のものです。2007/05/02(水) 14:11:20ID:KXh7uMcr
スキンメッシュのフレーム情報の管理に関して質問でつ。
ボーンとか仕込むとメッシュが階層構造持つことになるけど、
それぞれのフレームが持つ情報へアクセスする方法はどうやるのが一般的?

自分はいま全フレームへのポインタを一次元配列で確保しといて、
そのポインタを通じてフレーム内情報の読み書きをしてるんだけど。。。
階層構造とか再帰とかあんまり経験無いからどうすればいいのか……。
0802名前は開発中のものです。2007/05/02(水) 15:23:45ID:AUBROcJl
一番簡単な実装方法は再帰でツリーをたどる関数を作る
オーバーヘッドが気になるならば
ロード時にフルパス名を作ってそれをキーにしてマップに登録
0803名前は開発中のものです。2007/05/02(水) 19:23:04ID:KyLZIh1Z
好みの問題じゃないか?

基本は1つの頂点バッファで管理。
派生クラスでは体のパーツ(ボーン?)毎に、
頂点バッファ上での範囲を管理していて、
体の中心から変換マトリックスを更新しつつ、
範囲ごとに表示。

ローポリでいくつもりなので、
俺の場合はこんなもん。
0804名前は開発中のものです。2007/05/04(金) 17:40:46ID:0dDZmDLF
DirectX 9.0cでアプリケーションを作ってるのですが
普通に動かすと40FPSぐらいですが
Windows Media Player11を起動させておくと
60FPSに跳ね上がります。なんで??
0805名前は開発中のものです。2007/05/04(金) 17:47:27ID:rCIAddhL
普通に動かして40fpsってどんなスペックやねん
0806名前は開発中のものです。2007/05/04(金) 17:49:11ID:YK9pHZvN
>>804
タイマーの分解能の設定は?
08078042007/05/04(金) 18:15:02ID:0dDZmDLF
>>806
timeGetTime()で設定とかはとくにしてないですが
40FPSだと見た目でガタガタになるのがわかるので
おおよその値はあってると思います。
0808名前は開発中のものです。2007/05/04(金) 18:17:03ID:7nXNmJ5J
>>807
いや・・・・・・・・そうではなくて
設定してないなら設定しろと言っていると思われます
08098042007/05/04(金) 18:22:57ID:0dDZmDLF
>>806、808
はうあ! MediaPlayerを立ち上げなくても速くなりました!
MediaPlayerが共通のタイマーの設定をしてたということでしょうか。
ふしぎふしぎ。ありがとうございました。
0810名前は開発中のものです。2007/05/04(金) 18:54:44ID:AOCsVjjH
ふしぎーのもーりーはー
0811名前は開発中のものです。2007/05/04(金) 21:33:47ID:kIqerJ6I

メディアプレーヤーを起動してると速くなる系の質問はかなり頻出

某掲示板で検索してもわんさか出てきた
ttp://bbx.hp.infoseek.co.jp/cgi-bin/bbx.cgi?log=49&vew=100

様はtime**系の設定はシステムグローバルだってことね
0812名前は開発中のものです。2007/05/04(金) 22:20:15ID:+fXYp4ha
>>804
もう解決したが、
timeBeginPeriod(1)
timeEndPeriod(1);
だな
0813名前は開発中のものです。2007/05/04(金) 22:20:59ID:+fXYp4ha
これ、Win98から、Win2000に移ったころハマったよ。懐かしい(昔話)
0814名前は開発中のものです。2007/05/05(土) 22:52:08ID:JPwlhljg
自分の環境では、サイズを自由にしてテクスチャを生成できるのですが
そういう環境でも、テクスチャサイズを2のべき乗にした方が
スピードアップできるのでしょうか?
0815名前は開発中のものです。2007/05/05(土) 22:53:55ID:esePaGjw
何故実験環境があるのに、自分で測定しようとしない?
0816名前は開発中のものです。2007/05/05(土) 23:13:52ID:JPwlhljg
今は、指定数値のままの自由サイズでテクスチャを作成できるように
してるだけで、それを2のべき乗に拡大して(余剰分は透明色にする)
生成するルーチンの実装はまだやってないのです。
2のべき乗にした方が速くなると分かれば、そのように実装しますが
そうでないなら無駄な労力を使いたくないという事です。
0817名前は開発中のものです。2007/05/05(土) 23:16:34ID:WrGZaJEA
じゃぁ、お前の環境とやらを住人全員に配布しないとだめだな。
0818名前は開発中のものです。2007/05/05(土) 23:24:16ID:DhyAmmhw
>>817
>>816は別に配布するんじゃなくて自分専用の何かを作るってるんでないの

2の整数乗でないサイズのテクスチャに対応したハードなんて
持ってる人どんだけいるんかね
0819名前は開発中のものです。2007/05/05(土) 23:39:41ID:7/qHIZUN
2のべき乗の方が速い。
0820名前は開発中のものです。2007/05/05(土) 23:45:51ID:JPwlhljg
おお。サンクスです。
自分のPCのグラはオンボードなので、現代じゃ一般的だと思ったのですが
そうじゃないのですかorz
0821名前は開発中のものです。2007/05/06(日) 00:01:04ID:Z93//tsU
速い遅いというのが何を指しているかによるが
Directt3Dサーフェイスには幅の他にピッチという概念があるので
テクスチャ作成に関わる部分では、サイズがいくつだろうが変わらないと思う。
フィルタリング(ミップマップ)は2^nサイズだと、最適化ルーチンが使えるので
そっちの方が速そうだ。
テクスチャサンプリングはGPUのリッチさによりけりだな。
0822名前は開発中のものです。2007/05/06(日) 00:02:33ID:6yYXhBO8
自分で試すまでどっちが早いかなんて分からない。
0823名前は開発中のものです。2007/05/06(日) 00:03:58ID:8J0PSu8D
>速い遅いというのが何を指しているかによるが

テクスチャの表示です
0824名前は開発中のものです。2007/05/06(日) 00:36:27ID:a/Y3MxCW
>>804-813
自分も同じことにはまってました。
なぜか特定のマシンだけ極端にFPSが上がらなくて、VirtualPCを立ち上げると
FPSが高くなってました。

timeBeginPeriod、timeEndPeriodはアプリケーションの開始と終了に書いてましたが、
それを変更したら直りました。
どうもありがとう。
0825名前は開発中のものです。2007/05/06(日) 12:47:32ID:RU6zDoh8
>>816
テクスチャの内容なんて影響ないと思うから重要なのはテクスチャのサイズだけじゃないの?
サイズが2のべき乗かそうでないかの違いしかないんじゃない?
だから現状指定数値で実行できるなら

わざと2のべき乗のサイズにしたテクスチャの場合

2のべき乗のサイズでないテクスチャの場合

で速度を測ってみればいいじゃない
とりあえず表示はちゃんとしてなくても速度だけ測れればいいんでしょ?
ならこれで測れば問題ないんじゃない?

ただ、上の人も言ってるけど何が影響するのか要素が多すぎて
やってみてナンボってところあると思うよ
ミップマップとか、バイリニアフィルターとか、UVのアドレッシングモード、
1フレームでテクスチャ切り替えを頻繁に行ったとき、
1フレームでテクスチャ切り替えを頻繁に行わなかったとき
とかなんかちょっとした条件の変化で速度変わるかもわからんしね
テスト画面作ってるときは影響なかったけどゲーム作ってみたらモリモリ重くなったとかありがち。

ちなみに俺の環境ではたいして違いは無かった
0826名前は開発中のものです。2007/05/06(日) 20:25:23ID:Ehnv/+Iu
>>818
GF6600以降のグラボは全部自由サイズのテクスチャに対応してる。
ただし範囲外サンプリングはCLAMPに限定され、
ピクセルシェーダー命令が一部使えないけどな。
0827名前は開発中のものです。2007/05/06(日) 20:58:18ID:rhIxqW9P
>>826
GF6600は含まれてますか?
0828名前は開発中のものです。2007/05/06(日) 21:01:14ID:99tSTB5S
GFは、か・・・
0829名前は開発中のものです。2007/05/06(日) 21:10:39ID:brQOxHaj
これがゆとりか。
0830名前は開発中のものです。2007/05/06(日) 21:48:05ID:eoXP2/pR
>>826
制限があるのはNONPOW2CONDITIONAL
これはGF6600どころか、もっと前から使える。
というのも、この機能の制限をよく考えれば分かるが、POW2テクスチャの
一部を使えば実装できるようになっているので、ドライバが対応すれば
どんなチップでも対応できる。

GeForceは6シリーズから、真のNon-Pow2テクスチャに対応したから
細かい制限は無いよ。(仕様上テクスチャ圧縮は使えないが)
0831名前は開発中のものです。2007/05/06(日) 22:19:49ID:iZbcH5zM
TextureCaps の D3DPTEXTURECAPS_POW2 と D3DPTEXTURECAPS_NONPOW2CONDITIONAL は
(Yes, No)、(Yes, Yes)、(No, No) の3パターンがあるから注意しないとね。

dxinfoで調べた限りでは、無条件の (No, No) なのはNVIDIAのGeForce6シリーズ以降だけで、
ATIは最新のRADEON X1000シリーズでもいまだに条件付きnon-pow2しか使えないみたい。
http://www.netsphere.jp/dxinfo/
0832名前は開発中のものです。2007/05/07(月) 10:07:13ID:5DQ2mBLB
自分で3Dエンジン組めば分かるけどpow2のテクスチャはビット演算だけでrepeatとか可能で非常に便利。

俺はゲームで使うテクスチャは3D絵はpow2、2D絵は自由サイズにCAMP限定でエンジン組んでる。
non-pow2対応してない場合はpow2のテクスチャに拡大転送してUVは内部で自動再計算。
0833名前は開発中のものです。2007/05/08(火) 13:27:17ID:RIeDnWhP
GetIndicesについてなのですが、英語版MSDNでは引数が二つで、日本語版では一つです。

英語版MSDN
ttp://msdn2.microsoft.com/en-us/library/bb174391.aspx
日本語版MSDN
ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/directx9_c/directx/graphics/reference/d3d/interfaces/idirect3ddevice9/getindices.asp

D3D8からD3D9に書き換える上でこの問題にぶつかりました。
D3D8では英語版のものと同じで引数が二つです。

二つ目の引数を取得したいのですが、GetIndicesで取得する方法、もしくは他の関数がありますか?
よろしくお願いします。
0834名前は開発中のものです。2007/05/08(火) 17:35:02ID:mVBGg0iS
ヘルプが間違っているんだから、ヘッダを確認するのがプログラマの常識。
08358332007/05/08(火) 19:07:00ID:c2lqje6h
ヘルプが間違っているのですか…。ということは英語版のMSDNも。
ヘッダの確認もしたのですが、なにぶんあまり知識がないものでよくわからなかったのです。
なのでこちらで質問させていただきました。

BaseVertexIndexの取得についてですが、自己解決しました。
この引数を検索したら、DrawIndexedPrimitiveで使ってますね。

ありがとうございました。
0836名前は開発中のものです。2007/05/08(火) 23:17:50ID:yEwVRv2d
2のべき乗にしたがるのはswizzlingを一発で通したいからなんじゃないの
0837名前は開発中のものです。2007/05/09(水) 10:09:33ID:51Ld+rsF
RTSみたいなゲームを作ってる者なのですが
描画速度が思うように速くならずに、非常に困っております。

画面サイズは800×600で、フィールドは32×32の板ポリゴンをタイル状に敷き詰めてます。
その上で動くユニットと小物オブジェクトも全て板ポリゴン(一部ビルボード)です。
それを1フレームごとに
Clear
フィールド描画 = SetTexture()→DrawPrimitiveUp()を各タイルごとに約500回
ユニット&オブジェ描画 = Vertex配列に座標数値を代入して
              SetTexture()→DrawPrimitiveUp()を平均500回(500オブジェ分)
Present
と描画してるのですが、当方の環境はP4 1.8GHzでオンボードのグラボですが
せいぜい28FPSまでしか出せません(ポーズ中の描画Onlyのみで)。

たかだか1000個の板ポリゴンを描画するだけでFPS30もいかないものなんでしょうか?
これで本来の内部処理を加えると、20FPSが限界になってしまいます。
1フレームごとに
頂点配列に数値代入(フィールドタイル以外)→SetTexture()→DrawPrimitiveUp()
を板ポリの数だけ繰り返すやり方では駄目なのでしょうか?
0838名前は開発中のものです。2007/05/09(水) 10:54:03ID:rTpY446L
Direct3Dはテクスチャの切り替えとDraw系関数のコールがびっくりするくらい遅いので、
板ポリゴンはなるべくひとつの頂点配列に溜め込み、
テクスチャはなるべく一枚のテクスチャに詰め込み座標ずらしで対処して、
Draw系関数のコールとテクスチャの切り替えを少なくすればそれなりに改善されると思うよ。
まぁ1000回程度ではそこまでガタ落ちしないから、他にも問題抱えてそうだけど・・・。

パフォーマンスまわりの話は文面だけだと話しが拗れがちだから、
こーゆーとこで質問するよりプロファイラの読み方覚えた方が良いかと。
0839名前は開発中のものです。2007/05/09(水) 14:05:17ID:mwYHV51h
2chでDirect3Dのパフォーマンス絡みの話題となると、
ステートの変更を減らせとかDraw系関数の呼出回数を減らせとか、
結局そんな一般的なことしかなかなか書けないんだよね

プロファイラの読み方というかプロファイリングについての基本的なことなら、
とりあえずここを最後まで読んでみることをすすめてみる。

http://msdn2.microsoft.com/en-us/library/bb172234.aspx

長いけど、中でやってることは単純
0840名前は開発中のものです。2007/05/09(水) 14:14:56ID:kPjUjaY4
グラボの名前とテクスチャの解像度も書こうぜ
トライアングルセットアップがボトルネックとは限らん
0841名前は開発中のものです。2007/05/10(木) 23:34:29ID:mOs/ZOHf
IDirect3DDevice9::CreateOffscreenPlainSurfaceで作った
サーフェイスにレンダリングすることってできますか?
0842名前は開発中のものです。2007/05/10(木) 23:53:06ID:3Zh/e+WU
no you can do it
08438412007/05/11(金) 00:17:56ID:XDYeDF5T
>>842
僕の質問に対する回答でしょうか?
0844名前は開発中のものです。2007/05/11(金) 00:47:00ID:lpID6sKi
no i did
0845名前は開発中のものです。2007/05/11(金) 01:05:36ID:JAYMlBr0
英語の "Yes/No" は、日本語の「はい/いいえ」と
厳密に対応してはおりません。

842と844は
"All your base are belong to us"
レベルの英語もどきですね。
0846名前は開発中のものです。2007/05/11(金) 01:51:06ID:tUcXbWHz
no this engrish is yours
0847名前は開発中のものです。2007/05/11(金) 01:56:20ID:AeMEV9bt
>>845
842も844もネタだろ?
そのまま「はい」「いいえ」に置き換えたとしても
質問文の内容から考えて意味が通ってないしw
0848名前は開発中のものです。2007/05/11(金) 02:40:30ID:EKcw+E3D
>>841
できません。
0849名前は開発中のものです。2007/05/11(金) 09:50:20ID:FgQCKaVQ
>>841
できないし、そんなことをするような状況が存在しないだろう。
0850名前は開発中のものです。2007/05/11(金) 17:53:19ID:MwuPxxrI
>>849
GPU使った汎用演算で使いたいのかも。
まあ、その場合でも普通のテクスチャ使うか。。。
08518412007/05/11(金) 23:05:46ID:XDYeDF5T
>>848,849,850
ありがとうございました
0852名前は開発中のものです。2007/05/11(金) 23:22:19ID:0n1zgmNP
>>838
>>839
どうもありがとうございました。
0853名前は開発中のものです。2007/05/11(金) 23:45:13ID:vswfU1qI
>>838-839
>>837の問題に対してまとめたところで意味あるのか?と聞きたい
例えばこの処置で速度が2〜3倍になったとしてもそれでも60FPS多分届かないぐらいなんだぜ
チップを敷き詰めるならロード時にチップ敷き詰めたデカイテクスチャを作ることだってできると思うんだが
こういうゲームではどうなんだろうか?
まあ、ゲームのマップ全体を作れとは言わんがある程度のまとまりで逐次ロードしつつ作れれば
描画時のポリ数に悩まされることはないんじゃないだろうか?

少なくとも俺はDrawPrimitiveにポリゴンをまとめて突っ込むなんてのはなんの解決策にもなってないと思うんだけど?
だってDrawPrimitiveって普通に何回も呼ぶぜw
呼ばなきゃゲーム作れねぇじゃんw
エフェクトによって2度描き3度描きよくやるぜw
やっぱさ、このまとめる形の最適化ってなんかおかしいと思えってw
0854名前は開発中のものです。2007/05/11(金) 23:54:11ID:otpRAX3c
そうえいば、DirectX10でDrawPrimitiveのボトルネックが無くなるとか
噂を聞いたがどうなったんだ・・・・?

0855名前は開発中のものです。2007/05/12(土) 00:29:50ID:8iMaV2en
>>853
いやー、結構効果あると思う。以前おれも同じ状況になったし。
その時はスプライト?(ポリゴンx2の四角形、画面上で32x32ピクセルくらい)
一枚一枚でDraw〜()呼んでたら数百枚で60fps割った。

でもテクスチャが同じスプライトをまとめて、Draw〜()の回数減らしたら
30000枚くらい描画しても60fpsをキープできるようになった。
0856名前は開発中のものです。2007/05/12(土) 00:57:05ID:8iMaV2en
なんか思い出してきた。

たしかその時は同じ頂点バッファを使いまわしてたんだ。(=頂点4つを数百回反復使用。。。)
1フレーム間に同じバッファで何回もLock → Drawを繰り返したのが悪かった気がする。
だからDraw〜()の回数もあると思うけどバッファのLockにも注意すべきかと。
0857名前は開発中のものです。2007/05/12(土) 01:02:49ID:Dzr5JW1q
>>853
おたくのゲームの作り方に関係なく「DrawPrimitive」には
相当のCPU負荷が存在するのは現実世界での事実だ。

だからあの手この手でDrawPrimitiveを減らすための努力や
システムを組むのに時間をかけるんだろう。

そのためだけにわざわざMSが専用APIが実装したり、
GPU Gemsにそれを扱った章が掲載されたりしている。

DirectX10では改善されているが、DirectX9まではそこがボトルネック
なのだからそこをいかに減らすのかもプログラマの腕の1つ。

0858名前は開発中のものです。2007/05/12(土) 01:08:37ID:gQi1O0td
fbxやtga等のファイルを作成する開発環境でフリーで良いのありませんか?
0859名前は開発中のものです。2007/05/12(土) 01:14:19ID:LW0FYzwB
>>857
いや、重いのはわったけどさ
劇的に早くはなんねーってことよ。

なんつーの?DrawPrimitiveにまとめて突っ込むとかやりだすようになったら
手法を根本的に変える必要があるときだと思うのよ(まあ、例として>>853つーことで)

例えば、ソートをバブルソートが遅いからってクイックソートに変えて解決する問題って少ないと思うんだよね。
そりゃオーダーが全然違うし、クイックソートの方がはるかにはえーよ。それはわかる。
でも、実用的じゃないでしょ?
そういう話よ。

ゲームに限らずよ、ただ目先の数値につられてホイホイ最適化しちゃうのってまずいと思うぜ。
もう、これやるっきゃねーよ。って状況が意外と少ないと思うのよね。
0860名前は開発中のものです。2007/05/12(土) 01:47:38ID:rTYk//u9
>>858
http://goldenstudios.or.id/products/GTGE/
0861名前は開発中のものです。2007/05/12(土) 02:40:52ID:LW0FYzwB
でだ、そうはいってもまとめなきゃ動かんようなものもある
弾幕STGの弾とかやるっきゃないね
ただ、こういうのは俺の中ではええねんw

だってこんなのもともと普通じゃできねぇような量を描画しようとしてるじゃん
しかも、普通だったら全部カメラに入るなんてまずないのに2Dであるために全部描画しなくちゃいけないとか特殊事情
だからこれはどうでもええねん。
できないような量を無理やり動かすんだから大いに最適化してくれって感じじゃん。
魂までもすり減らせって感じだ。

ただ、マップなんかは普通じゃん。

俺がいうところの何を普通っていって何が異常かってのがわからん?
これはオブジェクト単位で普通とかどうとか言ってると思うw

パーティクルやらちょっとまとまった単位でのもんってのは他のやり方があると思うんだよね。
もう、パーティクルなんてやめてアニメーションテクスチャにとっかえちゃうとか、
マップチップも3D空間にもってきたら下地じゃん。これもやりようがあると思うんだよね。
ただ、弾幕STGの弾は弾1つでオブジェクトなんでやりようがないと思うんだよね。
この場合は妙ちくりんなワザ使って最適化する必要があると思うんだよね。
って感じ。

だからやらなきゃいけんところはやらなきゃいけんと思うんだけど
そういうところって少ないと思うんだよね。
ああ、で、やっちゃいけないところをやっちゃうと
今度は身動きとれなくなっちゃうって感じなので(やってることが最適化なので当然だが)あんまりこの
DrawPrimitiveにまとめて突っ込む手法ってのはやる前に別のやり方がないかちょっと考えたほうがいいと思うんだよね。
0862名前は開発中のものです。2007/05/12(土) 05:31:59ID:s6MTii/R
凄いぞ。書けば書くほど論旨がぼやけていく。
0863名前は開発中のものです。2007/05/12(土) 06:02:47ID:NH4reycD
噛めば噛むほど旨みが出てくるのなんてするめくらいだろ

大抵のものは噛めば噛むほど不味くなる。
それと同じ
0864名前は開発中のものです。2007/05/12(土) 06:58:58ID:bENb6ppL
またこの話題か
CPUがネックになってるかGPUがネックになってるかでどっちがいいのかなんて変わるだろ
0865名前は開発中のものです。2007/05/12(土) 07:04:06ID:jgOYrxmU
バッチの話題になると妙に血気盛んに意味無い論語り出すアホがいるよな

そんなもんケースバイケースだ、で終わるのに
0866名前は開発中のものです。2007/05/12(土) 08:51:13ID:LW0FYzwB
>>865
>ケースバイケース
それだってある程度法則があると思うんだけど
まあ、こんなDrawPrimitiveに全部突っ込むなんてのは稀だよ
0867名前は開発中のものです。2007/05/12(土) 09:37:22ID:l19wAVj/
まぁ、少なくともこのケースはDrawPrimitiveが原因だと思うが・・・。
0868名前は開発中のものです。2007/05/12(土) 09:48:15ID:Dzr5JW1q
ケースバイケースでもあるし程度の問題でもある。
何も画面描画を1回のDPで行えなんて無茶は誰も言ってないだろ。

描画数が多くてある程度まとめられるものをまとめようぜ、って話だろ。
背景のマップチップや弾幕STGの弾みたいなものはソートがそれほど重要でもなく
数だけはべらぼうに必要な場合が多いからそういうものはまとめる。

フォント描画のときだって1文字ずつDP呼び出すなんてまずしないだろ。
最近のD3DXFontですらキャッシュするように改良されてるんだから。

GPUがネックの場合はまとめようがまとめまいが処理落ち確定だから意味ないけどな。
GPUがネックなら基本的に数を減らすしかねぇ。
0869名前は開発中のものです。2007/05/12(土) 09:48:27ID:LW0FYzwB
>>867
解決策のアプローチの話なんだが・・・
0870名前は開発中のものです。2007/05/12(土) 09:55:02ID:LW0FYzwB
>>868
>数だけはべらぼうに必要な場合が多いからそういうものはまとめる
こうかくと1フレームのこういうモデルの描画すべてをまとめようとする奴がいる
あくまでオブジェクト単位でまとめるだけって書いておきたいw
0871名前は開発中のものです。2007/05/12(土) 10:04:33ID:jgOYrxmU
>>868
日本語読解力の欠けた俺に
ケースバイケースと程度問題の違いを教えてくれ

なんて不毛な論争なんだろうか
0872名前は開発中のものです。2007/05/12(土) 10:40:39ID:YCiJgexp
通訳しよう。

「他人の話はどうでもいい、俺様の話を聞け」
0873名前は開発中のものです。2007/05/12(土) 10:54:26ID:LW0FYzwB
>>871
横から突っ込むけど明らかに違うだろ、日本語的にも
0874名前は開発中のものです。2007/05/12(土) 10:58:01ID:tqnBkZXU
アイデンティティの問題ってのもあるから難しいよね。

身の程に合わないほど自意識を肥大化させたオッサンって、
現実では、 実際の待遇>>>自己評価  という状況に必ず直面する。
そうなると、普段抑圧している分、こういう場で
必要以上に自尊心を満たそうとし始める。

メンツに固執し、自分がトップに立つ形で決着がつかないと暴れ始める。
自分が一番でないとアイデンティティが崩壊するから、妥協できない。
相手の意見を認める、見解の違い・表現の違いを容認する柔軟性がなくなる。
そしてネットでも加齢臭をまき散らし、嫌われる。

「匿名の状況下では君の自尊心は何の意味も持たない」
という単純な現実を受け入れてくれればよいのだが。
0875名前は開発中のものです。2007/05/12(土) 11:12:42ID:LW0FYzwB
このタイミングでそのレスはさすがになにがいいたいのかわからない
0876名前は開発中のものです。2007/05/12(土) 11:37:34ID:cBzS5oT5
実際の待遇>>>自己評価 なら文句ないぜ
0877名前は開発中のものです。2007/05/12(土) 12:59:37ID:JD4dohcN
あーもー、この流れが嫌だからわざわざ予防線張ってアドバイス書いたのに・・・。
相変わらずID:LW0FYzwBは意味不明だな。

>>853
>描画時のポリ数に悩まされることはないんじゃないだろうか?
>>837は少ないポリ数なのに遅くて困ってると書いてるのに
どうしてポリ数削減の最適化をお勧めしてるんだろうか。人の話を全然聞いてない。
仮に>>837>>853の方法を適用したら、結果としてDPコールも減るから
問題の切り分けができないまま状態が改善してしまうかもしれないよ?

最適化の一般論を語るその口で出てくる具体的なアドバイスが
「目先の数値につられてホイホイ最適化」そのものってのが涙を誘う。
毎回思うんだが、あんた本当に2Dゲーム作ったことないだろ?
0878名前は開発中のものです。2007/05/12(土) 15:41:09ID:/AE2E85c
no i have never and will never do any of them
0879名前は開発中のものです。2007/05/12(土) 16:45:54ID:LW0FYzwB
>>877
でも、DrawPrimitiveにまとめて突っ込むだけじゃここまでの速度はでないよね?
また、それで解決するかも怪しいよね?
>>853の方法なら確実でしょ。
その件に関しては文句あるの?
0880名前は開発中のものです。2007/05/12(土) 18:30:45ID:Dzr5JW1q
>>879
そのやりかたの場合システムが複雑になる。
別スレッドでリアルタイムに状況判断して新しいテクスチャ作らないといか。
間に合わない場合なども想定して組まなければならないわけだしな。

あと使うかどうかは別として高速スクロールが出来ない。

ポリゴン数には悩まされなくてすむがテクスチャメモリや
テクセルレートに関しての悩みがあることを忘れてもいかん。

だからケースバイケースだというわけで。
0881名前は開発中のものです。2007/05/12(土) 18:38:13ID:LW0FYzwB
>>880
>あと使うかどうかは別として高速スクロールが出来ない
いや、できると思うけど俺は
0882名前は開発中のものです。2007/05/12(土) 22:52:39ID:RM9U51VB
どんな精度の絵を描こうとしてるんだ???
0883名前は開発中のものです。2007/05/12(土) 23:29:53ID:kVzI9kl0
>>881
やったとこないけどできると思うとか
んな推測をもとに今までグダグダ言ってたのか?

STGスレで「DirectXはスクリーン限定でラスタースクロール可能」等と
胡散臭い主張して突っ込まれてフェードアウトしたロートルがいたが
お前はとてもよく似ている
0884名前は開発中のものです。2007/05/12(土) 23:32:38ID:kVzI9kl0
s/スクリーン/フルスクリーン/


で、質問者>>837の数値を参考にして
例えば800*600フルカラーのゲーム画面で
フィールド一画面分(27x18のマップチップ)を描くとして
例えば以下の2つの手法を検討したとする

 @テクスチャにSetRenderTargetでスクロール分差分更新
 A30*20のメッシュのUVをスクロール分だけ差分更新

口先だけでないならこの両者のパフォーマンスを速やかに比較して
速やかに結論が出せるはずだ
0885名前は開発中のものです。2007/05/12(土) 23:35:32ID:kVzI9kl0
前者について補足すると、これはおそらくお前がやろうとしてる
画面と同じかそれよりも大きいサイズのテクスチャにフィールドを
描いて、それをフレームバッファに転送とかいう方法
0886名前は開発中のものです。2007/05/12(土) 23:48:20ID:kVzI9kl0
後者について補足すると、これはおまえが嫌っている
一画面分のマップチップをマテリアル単位でまとめて
DrawPrimitiveする方法だ。比較の便宜上差分更新としてるが
予めフィールド全域分を用意しても構わない。
0887名前は開発中のものです。2007/05/13(日) 01:29:23ID:1Qws1EBM
>>883
君、そうやっていつも掲示板で見えない敵と戦ってるの?w

いきなり高速スクロールを適用ことを前提にしてるけど
CDなりDVDなりHDDの容量が許す限りどこまでもいくんだから
環境の制限でもしない限りなんでもできるだろw

スクロールなんて貧乏臭いことしなくても、
市販のゲームのアリガチ演出みたいに背景にムービー流してもいいぜw

別にロード時にテクスチャこさえなくてもすでにこさえたもん保存しておいてもいいわけだし
また、別にスクロールするときにテクスチャを生成しなくちゃいけないなんてのはお前だけの妄想だ
別にあらかじめすべての絵を完成させた状態でもいい

それとこの条件だとお前に振りだぜ、俺は別にチップにこだわらなくていいって考えだし
でかいテクスチャをチップ的な使い方もできるから要はお前のやり方も俺のやり方の中に含まれてしまっている

それと30*20のメッシュとか条件ついてるけど
俺の方法なら4頂点の2ポリでもいいしw
この場合のパフォーマンスは最速だ。
もっと変化がほしけりゃ好きにサイズを変えたらいいし、その場合ゲームによりけりになってしまうな。
0888名前は開発中のものです。2007/05/13(日) 01:35:05ID:1Qws1EBM
要はチップってのがどういう性質のもんかってことだよね?ちがう?
昔はメモリが少なかったからできるだけ使いまわしていい絵を完成させようってのが
あったけど今は容量はアフォみたいに増えちゃったけど処理速度はそれにおっつくぐらい
上がってないって状況じゃないの?
0889名前は開発中のものです。2007/05/13(日) 04:13:16ID:YhPUR9BZ
こんな時間に質問です。

今、"Special Effects Game Programming with DirectX"って本を読んでいるんですが
添付されているCDのDirectXはVersion 8.1です。
ネットで検索すると最新はVersion 9.0cらしいですね。

皆さんならどちらをインストールしますか?
(それらの違いをよくご存知の方が答えてくださると光栄です。)
0890名前は開発中のものです。2007/05/13(日) 07:37:01ID:SnrZits5
>>888
マップチップでやるっつーのは質問者の意向だろう
その前提を覆すなら初めからそういっときなよ
苦しくなったからって今更一枚絵でーとか逃げんな

お前の主張

一枚絵でやってもいんじゃね。ローカルメモリに全部読み込むと楽でいいよ

で片付く話。長文でぐだぐだ書かなくていいよ
0891名前は開発中のものです。2007/05/13(日) 09:34:18ID:qSV8MiSt
>>888
お前まさかマップチップの利点がVRAMの節約だけだと思ってんのか?

すくなくとも画面いっぱいにチップ描画をする程度なら素直にバッファまとめてDPすりゃいい。
1024x768程度の画面を32x32のチップで埋め尽くしても余裕で60FPS出る程度の速度にゃなる。

元のチップを1枚のテクスチャにまとめるというデータ的な最適化は必要だがな。

背景に動画だとかユーザーの入力に反応してスクロールするときとか、
地形が変化するときどうするつもりだよ。
そもそも画質が劣化するしチップごとにアトリビュート持たせるために別のエディター用意すんのか?
0892名前は開発中のものです。2007/05/13(日) 09:38:17ID:Ll0xyx+i
>背景に動画だとかユーザーの入力に反応してスクロールするときとか、地形が変化するとき
質問者はそこまで想定してんの?
■ このスレッドは過去ログ倉庫に格納されています