VS2019+C#+DirectX无法运行
directx吧
全部回复
仅看楼主
level 1
shiigbka 楼主
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.DirectX;
using Microsoft.DirectX.Direct3D;
namespace DirectX_Test
{
public partial class BasicForm : Form
{
Device device = null;
public BasicForm()
{
//InitializeComponent();
this.ClientSize = new Size(800, 600);//指定窗体尺寸
this.Text = "第一个DirectX程序";//指定窗体标题
}
public bool InitializeDirect3D()
{
try
{
PresentParameters presentParams = new PresentParameters();
presentParams.Windowed = true; //指定以Windows窗体形式显示
presentParams.SwapEffect = SwapEffect.Discard; //当前屏幕绘制后它将自动从内存中删除
device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, presentParams); //实例化device对象
return true;
}
catch (DirectXException e)
{
MessageBox.Show(e.ToString(), "Error"); //处理异常
return false;
}
}
public void Render()
{
if (device == null) //如果device为空则不渲染
{
return;
}
device.Clear(ClearFlags.Target, Color.DarkSlateBlue, 1.0f, 0); //清除windows界面为深蓝色
device.BeginScene();
//在此添加渲染图形代码
device.EndScene();
device.Present();
}
static void Main()
{
BasicForm basicForm = new BasicForm(); //创建窗体对象
if (basicForm.InitializeDirect3D() == false) //检查Direct3D是否启动
{
MessageBox.Show("无法启动Direct3D!", "错误!");
return;
}
basicForm.Show(); //如果一切都初始化成功,则显示窗体
while (basicForm.Created) //设置一个循环用于实时更新渲染状态
{
basicForm.Render(); //保持device渲染,直到程序结束
Application.DoEvents(); //处理键盘鼠标等输入事件
}
}
}
}
是这样子一个网上抄的程序(参考:https://www.pianshen.com/article/8837568472/),但是在我的机器上编译正确,无法正常运行,会卡住,不显示界面。单步调试现象很奇怪,竟然无法进入BasicForm的构造函数,很是费解。
本人第一次玩DirectX,小白一枚,希望有大神讲解一下。
另外,.NetFramework4.7.2
DirectX:C:\Windows\Microsoft.NET\DirectX for Managed Code\1.0.2902.0
2021年11月10日 02点11分 1
1