SlimDX Direct3D11设备创建

时间:2015-01-13 13:44:00

标签: c# winforms video-streaming directx-11 slimdx

我的应用程序有问题(WinForms [我希望它不是问题,因为下面的链接指的是WPF]), 我的所有问题都描述如下:

Fast Video Display WPF

显示很多视频流,我以前使用图片框而不是意识到绘图很慢,而且fps变低了。

我听说这个人与Direct3D11一起工作但是 我在约束器中遇到了问题:

Texture2D tex = new Texture2D(Device, texDesc);

我如何发送设备?设备是一种不是对象的类型, 它弹出一个错误给我,我正在使用SlimDX ofc,Direct3D11 真的想弄清楚如何做,或创建自己的设备? 如果还有其他方法可以优化FPS和绘图 或者任何人都创建了一个可以处理此问题的控件,我会对此进行评估, 另外,可以通过邮件联系我:dorbenshimon1 {at} gmail {dot} com 非常感谢

1 个答案:

答案 0 :(得分:2)

您已经回答了自己的问题 - 您需要传递您已创建的设备实例,而不是类型。

查看设置视口的示例以了解如何完成此操作。


根据评论,如果您只想进行快速图像粘贴,DirectX几乎肯定不是正确的工具。尝试类似的东西:

using System.Windows.Forms;

public class FastImageRedraw : Panel
{
    private Image image;

    public FastImageRedraw()
    {
        this.SetStyle(ControlStyles.UserPaint, true);
        this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
        this.SetStyle(ControlStyles.DoubleBuffer, true);
        this.SetStyle(ControlStyles.ResizeRedraw, true);
        this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
        this.UpdateStyles();
    }

    public Image Image
    {
        get { return this.image; }
        set 
        {
            this.image = value;
            this.Invalidate();
        }
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        e.Graphics.DrawImage(this.Image, e.ClipRectangle);
    }
}

它非常基本,但只有在您更改图像时才使用GDI +处理重绘图像。

使用var fastImage = new FastImageRedraw();

创建标准的实例

然后随着fastImage.Image = myImage;

更改图像,请更新图像