开发环境:Visual Studio 2008 / DirectX9 sdk
1. 在vs2008下选择创建windows下的一个空项目。
2. 为项目添加引用,引入Microsoft.Directx,Microsoft.Directx.Directx3D,Microsoft.Directx.Directx3DX。
3. 为项目添加一个windows窗口BasicForm,具体代码如下:
public partial class BasicForm : Form
{
Device device = null;
public BasicForm()
{
//InitializeComponent();
this.ClientSize = new Size(800, 600); //绘制窗口大小
this.Text = "第一个DirectX程序"; //标题
}
/// <summary>
/// 初始化绘图类Device
/// </summary>
/// <returns>是否成功</returns>
public Boolean InitializeDirect3D()
{
try
{
PresentParameters presentParams = new PresentParameters();
presentParams.Windowed = true; //以窗体形式打开
presentParams.SwapEffect = SwapEffect.Discard; //当屏幕会之后,自动从内存中删除
device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, presentParams);
return true;
}
catch (DirectXException e)
{
MessageBox.Show(e.ToString(), "Error");
return false;
}
}
public void Render()
{
if (device == null)
{
return;
}
device.Clear(ClearFlags.Target, System.Drawing.Color.WhiteSmoke, 1.0f, 0); //清除窗体,并将其绘制成白色
device.BeginScene();
//添加渲染代码
triangle();
device.EndScene();
device.Present();
}
static void Main()
{
BasicForm basicForm=new BasicForm();
if (basicForm.InitializeDirect3D() == false)
{
MessageBox.Show("无法启动DirectX3D","错误!");
return;
}
basicForm.Show();
while(basicForm.Created)
{
basicForm.Render();
Application.DoEvents();
}
}
/// <summary>
/// 绘制一个三角形
/// </summary>
public void triangle()
{
CustomVertex.TransformedColored[] verts = new CustomVertex.TransformedColored[3];
verts[0].Position = new Vector4(150f,400f,0f,1f);
verts[0].Color = Color.Red.ToArgb();
verts[1].Position = new Vector4(this.Width/2, 100f, 0f, 1f);
verts[1].Color = Color.Purple.ToArgb();
verts[2].Position = new Vector4(this.Width-150f, 400f, 0f, 1f);
verts[2].Color = Color.Blue.ToArgb();
device.VertexFormat = CustomVertex.TransformedColored.Format;
device.DrawUserPrimitives(PrimitiveType.TriangleList,1,verts);
}
}
4. 将项目属性的输出类型 改为windows应用程序。