トップページ > 過去ログ > 記事閲覧
描画プライオリティ
名前:kakina 日時: 2009/01/18 08:52

始めまして。 つい先日からDXライブラリを使用させて頂いている者です。 お聞きしたい事があるのですが、 現在2D描画全般で、描画プライオリティ(描画順)を設定できる機能はあるでしょうか? 〜ToZBuffer関数を使用したマスク処理の場合、 同じ領域に複数描画する際に、最初にマスクした物が常に手前に来る事になり、常に処理順序を意識する必要が出てきそうですので・・・。 打開策として、以下の二つを考えたのですが、 すでに似たような機能などありますでしょうか? 1. 各描画関数をパックするプライオリティが設定できる描画関数をつくり、 プライオリティ順に描画する処理を作りFlip直前で行う。 (その際画像のキャッシュ・マスク・ブレンド設定などの問題がでる。) 2. 射影行列を「正射影」に自力作成・変更し、 DrawPolygon3D・DrawGraph3D関数で全ての2D処理を行う。 (Draw2D関連の便利機能の大半が使えない問題はある)

Page: 1 |

Re: 描画プライオリティ ( No.1 )
名前:管理人 日時:2009/01/19 01:04

> 現在2D描画全般で、描画プライオリティ(描画順)を設定できる機能はあるでしょうか? ありません kakinaさんもお察しのことと思いますが、Zバッファ等を使用する方法では半透明等の描画物が 正常に表示されないので、ライブラリで描画プライオリティに対応しようとするとCPUによる ソート処理が必須となってしまいます ソート機能を入れてしまうとソートの必要のない速度が必要なアプリケーションでは余計な ものになってしまうので、DXライブラリにはソート機能は搭載していません 打開策ですが、1が良いのではないかと思います 以前自前で用意したソート用のライブラリでは描画情報に 描画に使用した関数とその関数に必要なパラメータ( 座標やハンドルなど ) と、そのときの SetDrawBlendMode や SetDrawMode 等の設定も加えていました ( そして ScreenFlip の前に全データをソートして一情報毎にブレンド設定、 描画フィルタリング設定、描画関数分岐をして描画 ) 処理的にそのライブラリを介さない場合と比べて相当速度的に不利でしたが、 描画物自体がそんなに多くなかったので問題はありませんでした マスクなどの処理が入ってくるとなると1描画物単位ではなくてある程度 大きな処理毎でプライオリティを決められるようなシステムを構築した方が 良いような気がします
Re: 描画プライオリティ ( No.2 )
名前:kakina 日時:2009/01/19 01:45

ご返答ありがとうございます。 >マスクなどの処理が入ってくるとなると1描画物単位ではなくてある程度 >大きな処理毎でプライオリティを決められるようなシステムを構築した方が >良いような気がします 処理部と描画部を完全に分けて、 描画部分を関数毎にTask登録して、 登録した際のプライオリティ情報順に(処理)描画することで、 何とかお茶を濁す方法でいこうかと思います。 (Task操作で描画プライオリティを調整しやすそうですし。)

Page: 1 |