私は多くのことを調べましたが、ビットマップからTexture2Dを作成するために見つけた唯一の方法は次のとおりです。
using (MemoryStream s = new MemoryStream())
{
bmp.Save(s, System.Drawing.Imaging.ImageFormat.Png);
s.Seek(0, SeekOrigin.Begin);
Texture2D tx = Texture2D.FromFile(device, s);
}
と
Texture2D tx = new Texture2D(device, bmp.Width, bmp.Height,
0, TextureUsage.None, SurfaceFormat.Color);
tx.SetData<byte>(rgbValues, 0, rgbValues.Length, SetDataOptions.NoOverwrite);
ここで、rgbValuesは、32ビットARGB形式のビットマップのピクセルデータを含むバイト配列です。
私の質問は、私が試すことができるより速いアプローチはありますか?
カスタム形式の画像(マップタイル)を読み取り、それらをTexture2Dテクスチャに変換して表示する必要があるマップエディタを作成しています。以前のバージョンのエディターはC++実装でしたが、最初に画像をビットマップに変換し、次にDirectXを使用して描画するテクスチャに変換しました。私はここで同じアプローチを試みましたが、上記のアプローチは両方ともかなり遅すぎます。マップに必要なすべてのテクスチャをメモリにロードするには、妥当な仕様のコンピュータで最初のアプローチに約250秒、2番目のアプローチに約110秒かかります(比較のために、C ++コードには約5秒かかりました)。テクスチャのデータを直接編集するメソッドがある場合(Bitmapクラスなど)
どんな助けでも大歓迎です。
ありがとう