SlimDX で画像を読み込んでレンダリング/表示しようとしています。
これが私のコードです:
MessagePump.Run(form, () =>
{
device.Clear(SlimDX.Direct3D9.ClearFlags.Target, Color.Black, 1.0f, 0);
device.BeginScene();
SlimDX.Direct3D9.Texture tx =
SlimDX.Direct3D9.Texture.FromFile(device, @"C:\d.jpg");
sprite.Begin(SlimDX.Direct3D9.SpriteFlags.None);
sprite.Draw(tx, new Color4(0.5f, 0.5f, 1.0f));
sprite.End();
device.EndScene();
});
そして、デバイスの初期化
SlimDX.Direct3D9.PresentParameters presentParams =
new SlimDX.Direct3D9.PresentParameters
{
BackBufferWidth = form.Width,
BackBufferHeight = form.Height,
DeviceWindowHandle = form.Handle,
BackBufferCount = 3,
Windowed = true
};
device = new SlimDX.Direct3D9.Device(
new SlimDX.Direct3D9.Direct3D(),
0,
SlimDX.Direct3D9.DeviceType.Hardware, form.Handle,
SlimDX.Direct3D9.CreateFlags.HardwareVertexProcessing,
presentParams
);
今、私はこのdirectxのものに慣れていません。しかし、私ができることから、それはうまくいくはずです。テクスチャを取得し、スプライトで描画します。そして、デバイスはその時点で実行されています。
そうは言っても、ここで舞台裏で何が起こっているのか完全にはわかりませんが、画像を読み込んで表示するのはそれほど難しいことではないと思います。
編集:詳細
ああ、うーん、新しいデータを割り当てる方法がわかりませんが、試してみます。
画像はよく窓です。したがって、ウィンドウ (ゲーム) が 800x600 の場合、おそらく少し大きくなります (境界線がある程度かかります)。しかし、何らかの理由でズームインされているように見えます。ビューポート:
device.Viewport = new SlimDX.Direct3D9.Viewport(0, 0, form.ClientSize.Width, form.ClientSize.Height);
画像: