C#+Direct3D9.0开发实例之月亮绕着地球转
http://tech.ddvip.com 2006年08月02日 社区交流
本文详细介绍C#+Direct3D9.0开发实例之月亮绕着地球转
一、建立空窗体
新建一个工程,添加引用,并导入名称空间。
加入一个设备对象变量:
private Microsoft.DirectX.Direct3D.Device device = null;
添加初始化图形函数,并在这里面对设备对象进行实例化:
public void InitializeGraphics()
{
PresentParameters presentParams = new PresentParameters();
presentParams.Windowed = true;
presentParams.SwapEffect = SwapEffect.Flip;
presentParams.AutoDepthStencilFormat = DepthFormat.D16;
presentParams.EnableAutoDepthStencil = true;
device = new Microsoft.DirectX.Direct3D.Device(0, Microsoft.DirectX.Direct3D.DeviceType.Hardware, this, CreateFlags.HardwareVertexProcessing, presentParams);
}
当程序执行时,需要绘制场景,代码在这个函数里:
public void Render()
{
// 清空设备,并准备显示下一帧。
device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Black , 1.0f, 0);
// 设置照相机的位置
SetupCamera();
//开始场景
device.BeginScene();
if(meshLoaded)
{
mesh.Render(meshLoc);
}
device.EndScene();
//显示设备内容。
device.Present();
}
设置照相机的位置:
private void SetupCamera()
{
device.Transform.Projection = Matrix.PerspectiveFovLH((float)Math.PI / 4, this.Width / this.Height, 1.0f, 1000.00f);
device.Transform.View = Matrix.LookAtLH(new Vector3(0.0f ,0.0f, 20.0f), new Vector3(0.0f,0.0f, 0.0f), new Vector3(0,1,0));
}
作者:dandanCool 责编:豆豆技术应用