好久没写博了,今天边看书边记些内容吧... ...
DX中COM接口名称前缀有 I ,如表面接口 IDirect3DSurface9, 这个表面接口有3个重要方法:
1). LockRect(&lockedRect, /* pointer to receive locked data*/ 0, /* lockentire surface*/ 0 /* no lock flags speified);
2). GetDesc(&surfaceDesc); //参数是D3DSURFACE_DESC
3). UnlockRect(); //当前面所有完成后调用此方法解锁
D3DMULTISAMPLE_NONE //不使用全屏抗锯齿
D3DMULTISAMPLE_1_SAMPLE ... ... D3DMULTISAMPLE_16_SAMPLE //1-16 级抗锯齿
Direct3D内存池类型:
D3DPOOL_DEFAULT //根据资源类型用途把他们放在最合适的地方,内存中的资源必须在IDirect3DDevice::Reset被调用前徽调,再次使用时必须重新初始化
D3DPOOL_MANAGED //资源将放在DIRECT3D管理的受控内存中,当程序访问和改变资源时它先把资源拷贝到系统内存中,需要时会自动将资源拷贝到显存
D3DP00L_SYSTEMMEM //指定将资源放入系统内存
D3DPOOL_SCRATCH //指定将资源放在系统内存中, 不能直接使用本内存池的资源,但资源可以被拷贝出去
D3D有2中顶点处理方式,1个是软件方式,另1个是硬件方式,前者总是被支持且永远可用,后者依靠硬件
初始化D3DCAPSE9方法: GetDevicecaps( UINT Adapter, //指定要获得哪个显示适配器的特性
D3DDEVTYPE DeviceType, //指定设备类型
D3DCAPS9 *pCaps, //返回一个初始化的D3DCAPS9结构);
创建IDirect3DDevice9对象特性的结构体 D3DPRESENT_PARAMETERS, 其中参数:
BackBufferWidth 后备缓冲表面的宽度 BackBuffer Height
BackBufferFormat 后备缓冲表面的象素格式 BackbufferCount 后备缓冲表面的数量,通常为1
MultiSampleType 全屏抗锯齿的类型 MultiSampleQuality 全屏抗锯齿的质量登记
SwapEffect 指定表面在交换链中如何交换,其中D3DSWAPEFFECT_DISCARD最有效
hDeviceWindow 与设备相关的窗口句柄,在哪个窗口绘制就写哪个窗口句柄 Windowed true为窗口false为全屏
EnableAutoDepthStencil ture为自动创建深度缓冲 AutoDepthStencilFormat 深度缓冲格式
Flags 附加特性,D3DPRESENTFLAG_LOCKABLE_BACKBUFFER设定后备表面能锁定,降低应用程序性能/D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL深度缓冲在调用IDirect3DDevice9::present后被删除,有利提升程序性能
Fullscreen_RefreshRateInHz 刷新率,D3DPRESENT_RATE_DEFAULT默认刷新率
PresentationInterval D3DPRESENT成员,D3DPRESENT_INTERVAL_IMMEDIATE立即交换/D3DPRESENT_INTERVAL_DEFAULT D3D选择交换速度,通常等于刷新率
创建IDirect3DDevice9对象方法 CreateDevice(
UINT Adapter, //指定对象要边式的物理显示设备
D3DDEVTYPE DeviceType,//设备类型
HWND hFocusWindow,
DWORD BehaviorFlags,
D3DPRESENT_PARAMETERS *pPresentationParameters, // 指定一个初始化的
IDirect3DDevice9 ** ppReturedDeviceInterface//返回创建的设备);
这样一个基本的DX程序的就出来了