比较DirectX2005
昨天用最新的Dx2005做程序,突然不会了。
过去十分熟悉的CD3DApplication和其他和好用的类都不见了。
失望之余,拿起Dx2005就开始编写程序。
程序框架很好写,初始化各种事件:
DXUTSetCallbackDeviceCreated( OnCreateDevice );
DXUTSetCallbackDeviceReset( OnResetDevice );
DXUTSetCallbackDeviceLost( OnLostDevice );
DXUTSetCallbackDeviceDestroyed( OnDestroyDevice );
DXUTSetCallbackMsgProc( MsgProc );
DXUTSetCallbackKeyboard( KeyboardProc );
DXUTSetCallbackFrameRender( OnFrameRender );
DXUTSetCallbackFrameMove( OnFrameMove );
这些都是新的,反正都还是Win32风格的事件回调等方法。
设置光标显示模式:
DXUTSetCursorSettings( true, true );
初始化应用程序:
InitApp();
在这里,添加各种控件,他们模仿MFC对一系列控件作了封装,当然,还是D3D制作出来的。
需要在后面的程序中,执行渲染处理。
//这里等于是初始化成员数据,他的数据都放在DXUTState里面。
//主要做的工作就是增加了很多关于版本,命令解析等方法。
DXUTInit( true, true, true );
//这里,创建程序窗口,在CreateWindow之前作了很多工作。
DXUTCreateWindow( L"D3D window" );
//各种设备。和过去的InitDeviceObjects()是一样的。
DXUTCreateDevice( D3DADAPTER_DEFAULT, true, 640, 480, IsDeviceAcceptable, ModifyDeviceSettings );
//执行MsgProc这样的循环中。
DXUTMainLoop();
//结束程序
return DXUTGetExitCode();
可能写这个版本的D3D程序用不了多少行就完成了。
但是,效果并不理想。好像有更多东西被他们写了,我都不知道自己该怎么样继续写下去了。
而且,这个程序的运行,出奇的慢。可能控件已经消耗了大量资源。
对于新增加的一些类,我倒是觉得非常好用。
比如:CGrowableArray 比以前的CArrayList更强了
CDXUTTextHelper也很好用,只需要初始化一个ID3DXSprite,让文字画在上面就行了。
仔细看了一遍,还真发现了不少好东西。
今天下午,卸载了这个SDK,然后重新装上Dxsdk9-2003。
接着,哈哈,赶快拷贝2005里面的好东西。
2005取消了DXPlay这也是让我卸载的理由,他只说DP和微软网络总体结构有冲突(对抗)
可我还是要用DP,因为他真的很不错,写出来的服务器运行很稳定。
工作太忙了,先写到这里。
想来想去,最后还是决定自己写框架,从CreateWindow作起。
这样的选择感觉还不错,这几天代码进展的很不错,很多效果都能根据自己的想法来实现了。
如果,以后非要在窗体上搞个CD3DWnd类,那就参考MFC好好写一个d3d窗体类,让d3d像mfc一样好用。
浙公网安备 33010602011771号