|
分類:[C#]
初めまして
Managed DirectXでBitMapをTextureにしようとして 以下のようなコードをかきました。
/// <summary> /// テクスチャ生成 /// </summary> /// <param name="img">貼り付けるBitMap</param> protected void SetTexture(Bitmap img) { int w = 1,h = 1; int Width = img.Width; int Height = img.Height;
while (w < Width) { w = w * 2; } while (h < Height) { h = h * 2; }
tex=new Texture(Static.device,w,h,0,Usage.Dynamic,Format.X8B8G8R8,Pool.Managed); Surface s=tex.GetSurfaceLevel(0);
Graphics g= s.GetGraphics();
g.DrawImage(img,0,0,img.Width,img.Height);
s.ReleaseGraphics();
}
ここでStatic.deviceは
Static.device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, pp);
で初期化しています。
実行してみると
tex=new Texture(Static.device,w,h,0,Usage.Dynamic,Format.X8B8G8R8,Pool.Managed);
でInvalidCallException がはかれて止まります。
どのようにすればいいのでしょうか?
初期化だけなので、BitMapは関係ないはずです。 w,hは2の累乗になりますし…
|