界面基础有些凄惨,目前仅仅是通过表层的使用配合源码摸索,效果差强人意。如果还没有使用过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 )捕捉控件消息。

解决方案 »

  1.   

    WIN32窗体和DXUT 完全两回事了.. dxut是d3d渲染的2d界面,全自己/dxut实现.
      

  2.   


    大哥,我不得不说,你语文学过吗? 我说了我界面基础凄惨,你没兴趣可以保持沉默,尊重,respect懂吗?
      

  3.   

    做普通应用的话DXUT没意义,绘图原理和gdi差太多了,根本不用考虑刷新问题。代码量太大,设计上来说也一般。
      

  4.   

    没有用过gdi,惭愧,我不懂gdi,但是觉得DXUT还是很好使用的,控件也很好使用,类关系也很简单。但是DXUT确实有局限性,过把瘾玩玩还是不错的,和玩MFC,WIN32更新鲜点。
    我把例子精简下,还是用例子的3D背景(还不知道怎么导入自己的3D模型),修改下控件,做个登录窗体,效果还可以的话,上传下给大家看看。
      

  5.   

    额 瓶颈在于3D算法,MS不知道是有意还是怎的3D模型的算法进行了封装。。3D模型,有三张图片作为元素,分别为顶图,底图,中间图片,我下了张MM图后,覆盖上去,也有了3D的效果……感觉还蛮有意思的!!!