我正在尝试使用 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);
图片: