カテゴリー別

お絵描き、デザイン

写真、動画関連ソフト

アメーバピグ専用ソフト

ホームページ関連

画像処理

スキャナー用

SEO 関連

お楽しみ

その他

過去ログ

2012年10月28日(日)

XNA 4.0 の、新しい Texture2D 形式

写真閲覧ソフト: ミルノ PC フォトフレーム 1.5 では、
利用する XNA フレームワーク (グラフィック表示用ライブラリ) を
XNA 3.1 から、XNA 4.0 Refresh に変更しました。

そのときに、ちょっと苦労した点を、後進の方向けに、ご紹介。
この記事は、XNA 4.0 の Texture2D 形式についてです。

まず、Texture2D のディフォルトの SurfaceFormat が、
SurfaceFormat.Rgba32 (D3DFMT_A8B8G8R8) から、
SurfaceFormat.Color (D3DFMT_A8R8G8B8)
に変わっています。

また、XNA 4.0 では、SurfaceFormat.Rgba32 自体無いので、
Rgba32 を指定して、Texture2D を作成することもできません。

Texture2D をコンテントパイプラインで作成している場合には、
そのような変換が自動的に行われるので、特に問題は発生しませんが、
Texture2D.SetData などを使って自分で作成している場合には、
コードの変更が必要です。

ちなみに、XNA.4.0 の SurfaceFormat.Color は
Gdi+ の PixelFormat.Format32bppArgb や、
BitmapImage の PixelFormats.Bgra32
とは、並びが違うので、注意が必要です。(赤と青が入れ替わってます)

ミルノ PC フォトフレームでも、BitmapImage から
Texture2D を実行時に作成してます。この変換の際に、
赤を青を入れ換えるのが一番簡単なのですが、遅くなるのは必至です。

そこで、ミルノ PC フォトフレームでは Texture 2D を描画する際に、
カスタム Effect を用意、ピクセルシェーダー機能を使って、
赤と青の成分を入れかえながら描画するようにコードに変更しました。

XNA 4.0 を利用した高速画像ビューアー、ミルノ PC フォトフレーム
試用は無料なので、是非使ってみてくださいね。


コメント
コメントする