0

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

图片:在此处输入图像描述

4

0 回答 0