调试时不会加载Directx窗口

时间:2016-01-14 07:29:51

标签: c# forms visual-studio-2015 directx directx-9

我试图创建一个窗口并将设备初始化到窗口但是每次运行程序时窗口都不会加载。我在visual studio 2015中为Windows窗体应用程序执行此操作。 这里是form1.cs:

using System.Drawing;
using System.Windows.Forms;
using Microsoft.DirectX.Direct3D;
namespace DirectXTutorial2
{
public partial class Form1 : Form
{
    private Device device;

    public Form1()
    {
        InitializeComponent();
        InitializeDevice();
    }

    public void InitializeDevice()
    {
        PresentParameters presentParams = new PresentParameters();
        presentParams.Windowed = true;
        presentParams.SwapEffect = SwapEffect.Discard;
        device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, presentParams);
    }

    private void Render()
    {
        device.Clear(ClearFlags.Target, Color.DarkSlateBlue, 0, 1);
        device.Present();
    }

    private void Form1_Paint(object sender, PaintEventArgs e)
    {
        Render();
    }
}
}

有谁知道这个解决方案? 我不知道它是否有帮助,但我正在运行Windows 10,64位,Directx 2010,之前我已经添加了我的参考资料。

2 个答案:

答案 0 :(得分:2)

好吧,我找到了解决问题的方法。开发人员不再支持DirectX for托管代码。适用于DirectX的最新框架是.net Framework 3.5。托管代码也不支持64位。要解决此问题,请转到项目属性。在应用程序选项卡中找到目标框架并将.net框架更改为3.5或更低。接下来转到构建选项卡并找到平台目标,将其更改为x86。

答案 1 :(得分:0)

首先想一想在你的应用程序中使用try catch,因为在DirectX中发生了很多事情,所以你需要确认你得到错误的步骤。

try
    {

        PresentParameters presentParams = new PresentParameters();
        presentParams.Windowed=true;
        presentParams.SwapEffect = SwapEffect.Discard;
        device = new Device(0, DeviceType.Hardware, this, 
                CreateFlags.SoftwareVertexProcessing, presentParams);

    }
    catch (DirectXException)
    { 
         return false; 
    }

尝试使用不同的设备类型,例如DeviceType.Software

清除设备后,添加开始和结束场景

device.Clear(ClearFlags.Target, System.Drawing.Color.Blue, 1.0f, 0);
    device.BeginScene();
    device.EndScene();
    device.Present();

尝试调用你的'渲染;功能在'主'功能