Re: アルファチャンネル付きPNGについて ( No.1 ) |
- 名前:いっち 日時:2011/10/02 18:23
> これがDXLIBの機能(仕様)という事であれば、是非とも使用させて頂きたいと思っています。
仕様です。
> 普通のノーブレンド描画とそれほど変わらないのでしょうか…?
描画速度は多くの場合ハードウェアに依存します。
|
Re: アルファチャンネル付きPNGについて ( No.2 ) |
- 名前:管理人 日時:2011/10/02 23:55
> これは、『_a』が付く画像ファイルを用意するやり方と同じと思って良いのでしょうか?
> (α成分を同ファイルのαチャンネルから拾うか、別ファイルの明度から拾うかの違い)
はい、読み込まれた後の状態は全く同じと考えていただいて大丈夫です
> アルファチャンネル付きpngをLoadGraph()で読み込んだ時の動作について、マニュアルには特に説明がなかったと思います。
> 実施してみると、ノーブレンドで描画しても、アルファチャンネル有効で描画されるような動作でした。
現在のDirectX9を使用したDXライブラリでは透過色処理をアルファチャンネルを使用して実現しているので
DX_BLENDMODE_NOBLEND の意味の通りにするなら DX_BLENDMODE_NOBLEND の場合は透過しないのが正しいのですが、
DirectX7 を使用していた頃は透過色処理は DirectX の「透過色処理」専用の機能が存在していてアルファチャンネルを
使用していなくても透過色処理が可能だったため、DirectX7 を使用していたバージョンと互換性を持たせるために
設定が DX_BLENDMODE_NOBLEND でもアルファチャンネルを使った透過色処理( 実際はただのアルファチャンネルを
使用したアルファブレンド( 又はアルファテスト ) )が実行されるようになっています
> 素人考えでは、1画素1画素α成分を持ったグラフィックを描画する処理は非常に重たいような気がするのですが、
> 普通のノーブレンド描画とそれほど変わらないのでしょうか…?
ソフトウエアで実装した場合は確かに倍以上の速度差が発生しますが、専用チップを使用するグラフィックスデバイスはその辺りの
処理に最適化されているのか、そこまでの処理速度差は発生しません
ただ、はっきりとした正しい知識があるわけではありませんが、
ビデオカード > NVIDIA,RADEON製のチップセットに含まれるグラフィックスデバイス > それ以外のチップセットに含まれるグラフィックスデバイス
の順で「α成分を持ったグラフィックを描画するかどうか」による速度差が大きくなる傾向があるような気がします
ちなみにビデオカードが搭載された環境では、例えば今数千円で購入できるビデオカードでも 640x480サイズの
アルファチャンネル付きの画像をアルファブレンド処理付きで描画しても60分の1秒間に少なく見積もっても10〜20回以上、
私が使用しているちょっと割高な GeForceGTX560Ti では600回くらい描画できるだけの性能がありますので
ビデオカードを使用する場合はあまり処理負荷を気にする必要は無いと思います
( ビデオカード意外になるとガクンと性能が下がるのでなんでも「α成分付き画像」というのは危険かもしれませんが・・・ )
GeForceGTX560Ti で 640x480 のアルファチャンネル付きの画像を60分の1秒間に600回描画できますが、
これをアルファチャンネルなしの描画にした場合は700回になりました
だいたい16%くらいの速度差です
|
Re: アルファチャンネル付きPNGについて ( No.3 ) |
- 名前:白河飛翔(解決) 日時:2011/10/03 21:04
>管理人さま
丁寧な回答ありがとうございます!
安心してアルファチャンネル付きpngを使用して
透過色処理の実装作業をさせていただく事ができます。
「α成分を持ったグラフィックを描画するかどうか」による速度差
についての説明も大変参考になりました。
安めのビデオカードを対象にして、必要な分だけ「α成分付き画像」にする
という方向で考えたいと思います。
// おそるべしGeForceGTX560Ti(汗
言葉足らずな質問に120%の回答をしてくださり本当にありがとうございました。
|