我试图创建一个窗口并将设备初始化到窗口但是每次运行程序时窗口都不会加载。我在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,之前我已经添加了我的参考资料。
答案 0 :(得分:2)
答案 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();
尝试调用你的'渲染;功能在'主'功能