界面基础有些凄惨,目前仅仅是通过表层的使用配合源码摸索,效果差强人意。如果还没有使用过DXSDK,希望赶紧加入来玩一把!!
例子仍然是 :D:\DirectSDK\Samples\C++\Direct3D\CustomUI!
现阶段目标: 做一个DXUT的登录窗体
我本来想把DX的效果带入到WIN32中去,也就是WIN32窗体中按钮做出DX按钮的半透明效果,
最后发现在WIN32窗体和DXUT还是不可兼容,目前完全在DXUT库上进行修改摸索。
我对界面认识还是停留在MFC多窗体的印象上,希望DXUT也能做出多窗体的感觉来,
可目前感觉DXUT完全是显卡绘出来的,启动的进程就是独占窗体,如果要出现窗体,那也需要自己绘制出来。
这如果要达到MFC这样多窗体的效果,觉得有些吃力~~
尝试后,也有些大致的印象,DXUT中有两个比较重要的类CDXUTDialog和CDXUTDialogResourceManager。在MFC中,一个窗体就是一个窗体类,
而DXUT中,仅有一个窗体,可以创建多个CDXUTDialog 让后通过CDXUTDialogResourceManager进行统一的管理。
(CDXUTDialogResourceManager是CDXUTDialog 的友缘类)DXUT的内容也很丰富了,
class CDXUTDialogResourceManager;
class CDXUTControl;
class CDXUTButton;
class CDXUTStatic;
class CDXUTCheckBox;
class CDXUTRadioButton;
class CDXUTComboBox;
class CDXUTSlider;
class CDXUTEditBox;
class CDXUTListBox;
class CDXUTScrollBar;
class CDXUTElement;
struct DXUTElementHolder;
struct DXUTTextureNode;
struct DXUTFontNode;这些控件都是在DXUT里有的,获取按钮事件也和MFC差不多,这样使用DXUT也应该较为方便。
目前例子中,窗体的启动流程如下: DXUTSetCallbackD3D9DeviceAcceptable( IsDeviceAcceptable );
DXUTSetCallbackD3D9DeviceCreated( OnCreateDevice );
DXUTSetCallbackD3D9DeviceReset( OnResetDevice );
DXUTSetCallbackD3D9FrameRender( OnFrameRender );//绘制画面
DXUTSetCallbackD3D9DeviceLost( OnLostDevice );
DXUTSetCallbackD3D9DeviceDestroyed( OnDestroyDevice );//退出窗体
DXUTSetCallbackMsgProc( MsgProc );
//DXUTSetCallbackKeyboard( KeyboardProc );
DXUTSetCallbackFrameMove( OnFrameMove );//控制旋转速度
DXUTSetCallbackDeviceChanging( ModifyDeviceSettings ); DXUTSetCursorSettings( true, true );
InitApp();
DXUTInit( true, true ); // Parse the command line and show msgboxes
DXUTSetHotkeyHandling( true, true, true );
DXUTCreateWindow( L"JWUI TEXT" );//设置标题
DXUTCreateDevice( true, 640, 480 );//是否全屏 640,480 修改窗体大小
DXUTMainLoop();
一些API的封装还不了解,但是流程大概是,先导入一个3D模型,然后再这模型之上添加CDXUTDialog 对象,然后通过 (DXUTSetCallbackD3D9FrameRender( OnFrameRender );//绘制画面 ) 不停绘制void CALLBACK OnGUIEvent( UINT nEvent, int nControlID, CDXUTControl* pControl, void* pUserContext )捕捉控件消息。
例子仍然是 :D:\DirectSDK\Samples\C++\Direct3D\CustomUI!
现阶段目标: 做一个DXUT的登录窗体
我本来想把DX的效果带入到WIN32中去,也就是WIN32窗体中按钮做出DX按钮的半透明效果,
最后发现在WIN32窗体和DXUT还是不可兼容,目前完全在DXUT库上进行修改摸索。
我对界面认识还是停留在MFC多窗体的印象上,希望DXUT也能做出多窗体的感觉来,
可目前感觉DXUT完全是显卡绘出来的,启动的进程就是独占窗体,如果要出现窗体,那也需要自己绘制出来。
这如果要达到MFC这样多窗体的效果,觉得有些吃力~~
尝试后,也有些大致的印象,DXUT中有两个比较重要的类CDXUTDialog和CDXUTDialogResourceManager。在MFC中,一个窗体就是一个窗体类,
而DXUT中,仅有一个窗体,可以创建多个CDXUTDialog 让后通过CDXUTDialogResourceManager进行统一的管理。
(CDXUTDialogResourceManager是CDXUTDialog 的友缘类)DXUT的内容也很丰富了,
class CDXUTDialogResourceManager;
class CDXUTControl;
class CDXUTButton;
class CDXUTStatic;
class CDXUTCheckBox;
class CDXUTRadioButton;
class CDXUTComboBox;
class CDXUTSlider;
class CDXUTEditBox;
class CDXUTListBox;
class CDXUTScrollBar;
class CDXUTElement;
struct DXUTElementHolder;
struct DXUTTextureNode;
struct DXUTFontNode;这些控件都是在DXUT里有的,获取按钮事件也和MFC差不多,这样使用DXUT也应该较为方便。
目前例子中,窗体的启动流程如下: DXUTSetCallbackD3D9DeviceAcceptable( IsDeviceAcceptable );
DXUTSetCallbackD3D9DeviceCreated( OnCreateDevice );
DXUTSetCallbackD3D9DeviceReset( OnResetDevice );
DXUTSetCallbackD3D9FrameRender( OnFrameRender );//绘制画面
DXUTSetCallbackD3D9DeviceLost( OnLostDevice );
DXUTSetCallbackD3D9DeviceDestroyed( OnDestroyDevice );//退出窗体
DXUTSetCallbackMsgProc( MsgProc );
//DXUTSetCallbackKeyboard( KeyboardProc );
DXUTSetCallbackFrameMove( OnFrameMove );//控制旋转速度
DXUTSetCallbackDeviceChanging( ModifyDeviceSettings ); DXUTSetCursorSettings( true, true );
InitApp();
DXUTInit( true, true ); // Parse the command line and show msgboxes
DXUTSetHotkeyHandling( true, true, true );
DXUTCreateWindow( L"JWUI TEXT" );//设置标题
DXUTCreateDevice( true, 640, 480 );//是否全屏 640,480 修改窗体大小
DXUTMainLoop();
一些API的封装还不了解,但是流程大概是,先导入一个3D模型,然后再这模型之上添加CDXUTDialog 对象,然后通过 (DXUTSetCallbackD3D9FrameRender( OnFrameRender );//绘制画面 ) 不停绘制void CALLBACK OnGUIEvent( UINT nEvent, int nControlID, CDXUTControl* pControl, void* pUserContext )捕捉控件消息。
大哥,我不得不说,你语文学过吗? 我说了我界面基础凄惨,你没兴趣可以保持沉默,尊重,respect懂吗?
我把例子精简下,还是用例子的3D背景(还不知道怎么导入自己的3D模型),修改下控件,做个登录窗体,效果还可以的话,上传下给大家看看。