Directx9.0编程学习笔记二(Direcx接口的初始化)

在代码中加入以下两条预处理语句:

#include "d3dx9.h" //Driect9.0的头文件

#pragma comment(lib,"d3d9.lib")

初始化DirectX首先要声明以下5个变量:

IDirect3D9 *_d3d9=0; //声明Direct接口指针
D3DCAPS9 caps;//接口性能结构
D3DDEVTYPE devicetype;//设备类型
D3DPRESENT_PARAMETERS d3dpp; //D3D参数结构
IDirect3DDevice9 *device=0; //DirectDevice接口

然后在自定义的初始化函数中加入:

<span style="font-size:18px;">_d3d9=Direct3DCreate9(D3D_SDK_VERSION); //采用默认方式创建D3D接口
	if(!_d3d9){	
		MessageBox(hwnd,"DirectX9.0 接口创建失败!","错误!",MB_ICONERROR);
		exit(0);
	}
	_d3d9->GetDeviceCaps(D3DADAPTER_DEFAULT,devicetype,&caps);
	int vp=0;
    if(caps.DevCaps&D3DDEVCAPS_HWTRANSFORMANDLIGHT)
	{
		vp=D3DCREATE_HARDWARE_VERTEXPROCESSING;
		MessageBox(hwnd,"支持硬件顶点运算","提示",MB_ICONINFORMATION);
	}
	else
	{
		vp=D3DCREATE_SOFTWARE_VERTEXPROCESSING;
	//	MessageBox(hwnd,"支持软件顶点运算","提示",MB_ICONINFORMATION);
	}
    d3dpp.BackBufferWidth=800; //后台缓存表面宽度,单位为像素
	d3dpp.BackBufferHeight=600; //后台缓存表面高度,单位为像素
	d3dpp.BackBufferFormat=D3DFMT_A8R8G8B8; //后台缓存像素格式,32位
	d3dpp.BackBufferCount=1;  //后台缓存的个数为1
	d3dpp.MultiSampleType=D3DMULTISAMPLE_NONE; //后台采样类型,这里为多重采样
	d3dpp.MultiSampleQuality=0;  //后台缓存采样质量,这里为默认
	d3dpp.SwapEffect=D3DSWAPEFFECT_DISCARD; //后天缓存置换页面的方式,这里的为效率最高的方式
	d3dpp.hDeviceWindow=hwnd; //指定要绘制的窗口
	d3dpp.Windowed=false; //这里为全屏
	d3dpp.EnableAutoDepthStencil=true; //自动创建深度缓存或者模板缓存
	d3dpp.AutoDepthStencilFormat=D3DFMT_D24S8; //深度缓存或者模板缓存的像素格式,这里为24位深度8未作为模板缓存
	d3dpp.Flags=0; // 是否丢弃深度缓存或者模板缓存,这里默认为丢弃
	d3dpp.FullScreen_RefreshRateInHz=D3DPRESENT_RATE_DEFAULT; //显示器刷新的频率,采用默认
	d3dpp.PresentationInterval=D3DPRESENT_INTERVAL_IMMEDIATE; //提交页面的方式,这里为立即提交
	HRESULT hr=_d3d9->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hwnd,D3DCREATE_HARDWARE_VERTEXPROCESSING,&d3dpp,&device);
	if(FAILED(hr))
	{
		MessageBox(hwnd,"创建设备失败","错误!",MB_ICONERROR);
		exit(0);
	} </span>


然后在主函数中调用初始化函数便可得到初始化结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值