トップページ > 過去ログ > 記事閲覧
DXライブラリを使うことによる描画効率
名前:Dixq 日時: 2010/04/15 23:28

いつもDXライブラリを愛用させて頂いています。 DXライブラリはDirectX9をラッピングしてあるようですが、 DXライブラリでDrawGraphするのと、 それと同じ動きをネイティブにDirectXで書くのではどれ位描画効率は変わりますか? 例えばDirectXで直書きすると1秒間に1万枚描画出来るが、DXライブラリでは5000枚だとかそういう事がお聞きしたいのです。 DXライブラリの機能はαブレンド、加算ブレンドでDrawGraph、DrawRotaGraphする事しか用いません。 この辺で特に効率が落ちる部分はありますか?

Page: 1 |

Re: DXライブラリを使うことによる描画効率 ( No.1 )
名前:Will 日時:2010/04/16 15:34

> DirectXで直書きする 結局DXライブラリが行っていることを、多少なりとも自分で実装することになるだけなので、 そのプログラムの差になるのではないですか? 知識のない人が作れば直のほうが性能落ちる場合もあると思いますよ。
Re: DXライブラリを使うことによる描画効率 ( No.2 )
名前:通りすがり 日時:2010/04/17 14:03

速さはグラフィックカードの差が大きいから意味ないです。 ネイティブDirectXの利点はプログラマブルシェーダー使う時でないでしょうか。
Re: DXライブラリを使うことによる描画効率 ( No.3 )
名前:管理人 日時:2010/04/19 01:31

難しい質問ですね・・・ > 例えばDirectXで直書きすると1秒間に1万枚描画出来るが、DXライブラリでは5000枚だとかそういう事がお聞きしたいのです。 仮に私がDirectXを直接扱うプログラムを組んでみた場合を想定します ( 試したわけではないのであくまで推測です ) @1万枚が1つのテクスチャを使用していて、且つ全く動かず、1画像辺り16x16サイズであり、それを1万枚毎フレーム描画する、 という条件でしたらDirectXを直接扱う場合はビデオカードの性能が良ければDXライブラリの10倍以上高速に描画できると思います A動かない、という条件のみ変えて1万枚の画像がランダムに画面上を等速直線運動している(画面端にぶつかったら跳ね返る)という場合ですと 差はいきなり縮まってDXライブラリのDrawGraphを使う場合より1.5倍ほど高速に描画できると思います、ただ、DXライブラリの DrawPrimitive2Dを上手く使用した場合は恐らく速度差は殆ど無いと思います > DXライブラリの機能はαブレンド、加算ブレンドでDrawGraph、DrawRotaGraphする事しか用いません。 > この辺で特に効率が落ちる部分はありますか? DXライブラリはブレンド設定関連が色々な状況が存在するために少し不効率的になっていますので、 仮にソフトウエアレンダリング機能もモデル描画機能も無く、2Dの描画関数もLoadGraphとSetDrawScreenと ScreenFlipとSetDrawBlendModeとDrawGraph,DrawRotaGraphしかない( DrawBox も DrawString も無い )且つ、 不正なグラフィックハンドルを描画関数に渡したらプログラムが強制終了するようなエラーチェック処理もない ライブラリをなるべく上記関数が高速に動作するように作成して、Aの条件に「1万枚がそれぞれ加算ブレンドか αブレンドでゆっくりフェードイン・フェードアウトを繰り返す」という条件を追加したらDXライブラリより 2倍ほど高速に描画できるようになるかもしれません ただ、その条件が加わった時点でDXライブラリもシンプルなライブラリもAより数倍処理に時間が掛かると思いますが(・・; 上記の例以外で仮に私がDirectXの仕様も考慮しつつソフトウエアの仕様を設計してDirectXを直接使う 2Dのゲームを作成した場合は、DXライブラリで書いた場合に比べて ゲームの仕様をDirectXの仕様に合わせて設計したゲームの場合でしたら恐らく10倍以上の速度差が DirectXの仕様に合わせず、まずゲームらしいゲームの仕様を作ってからDirectXを扱うプログラムを設計した場合は恐らく最低でも1.3倍、 平均して1.5倍、DirectXの仕様にピッタリな部分があれば2.0倍以上の速度差を出せると思います ただ、これは作成する各ソフト専用にDirectXを扱うプログラムを設計・最適化したら、の想定です ちなみに通りすがりさんも仰られていますが、ビデオカードの良し悪しで同じプログラムでも軽く10倍以上の速度差が発生しますので ( 特に画面を覆いつくすような広い面積を持つ描画処理を多用した場合は顕著で、その場合はDXライブラリを使うかDirectXを直接 扱うかどうかに関係なく、とにかくビデオカードのフィルタリングの性能に依存します ) DirectXを直接扱う利点は速度よりも細かいところまで自分で構築できるという点だと思います ( DirectXの勉強をしている内にDirectXのシステムを構築することが目的になってしまうことがあるという欠点もありますが・・・ )
Re: DXライブラリを使うことによる描画効率 ( No.4 )
名前:Dixq 日時:2010/04/19 21:34

> Willさん ご回答ありがとうございます。 そうですよね。 実際工夫次第でどれ位まで高速化出来るかに興味がありました。 > 通りすがりさん なるほど、そうですか。 同じ環境の場合で比べたらということに興味があったのですが、グラボ次第ということですね。 > 管理人さん 丁寧なご回答ありがとうございます。 なるほど、細かなご解説大変参考になります。 今後スペックが限りなく低い環境で十分な動作するシステムを作ってみようと思っているので、 教えて頂いた辺りを念頭に試してみようと思います。 ご回答ありがとうございました。

Page: 1 |