这是Quartz控件系列教程的第五个例子,这个例子我们用独立的代码来完成。
作为一个3D游戏,经常会用到3D模型需要显示到UI上,比如说游戏商城中的物品,人物属性的查看框。在最新版的UI控件中增加了一个C3DRTTObject类,这个类主要负责对3D模型的获取,转化成为2D图像显示在UI上,出现类似于下面这样的效果。
置顶帖里还增加了VS_NET_2005版库
在开始头文件的地方,我们加入GUI类库头文件
#include "gui/GUI.h" //QT_GUI系统头文件
然后生成GUI管理器对象,为了控制方便起见,我们分别生成GUI带的输入类cMouse,cKeyboard,以及一个我们要使用的C3DRTTObject对象。
CUIWindowManager* g_pWindowManager = NULL;
cMouse g_pMouse;
cKeyboard g_Keyboard;
C3DRTTObject g_Rtt;
在InitD3D中创建完成d3d设备以后,我们初始化GUI管理器,并启动它,然后我们就可以调用GUI其他对象,管理器就会接管这些对象进行自动操作。
////******************************************************** g_pWindowManager = new CUIWindowManager; g_pWindowManager->Init(hWnd,g_pd3dDevice); g_pWindowManager->SetQuartzMouse(&g_pMouse); g_pWindowManager->SetQuartzKeyboard(&g_Keyboard); g_pWindowManager->CUIWindowManagerRUN(); ////********************************************************
接下来对C3DRTTObject类对象 g_Rtt进行初始化。init函数包括四个参数
g_Rtt.CreateTexture(50,50,500,500);//参数(绘制在屏幕上的X坐标,绘制在屏幕上的Y坐标,控件的长,控件的宽)这里的长宽是缓冲区大小,过大会没有效果,长宽比也要正确,否则会变形。
初始化完成以后,这个控件就被GUI管理器接管了,下来我们只要去获取3D图像就行了。
.(建议渲染之前关闭 m_pDevice->SetRenderState(D3DRS_ZWRITEENABLE, FALSE);)
在VOID Render()这个函数里
if( SUCCEEDED( g_pd3dDevice->BeginScene() ) ) {
g_Rtt.LockSurface(); //锁定内存缓冲区
//*****************************************************************
//在这个位置按照d3d地方法绘制模型,例如打开深度缓冲,光照,平移缩放等
//*****************************************************************
g_Rtt.UnLockSurface(); //内存缓冲区解锁
g_pWindowManager->Render();//gui管理器渲染GUI控件
g_pd3dDevice->EndScene();
}
现在绘制出来的模型就是一个平面模型了~~
[此贴子已经被作者于2009-4-26 11:46:06编辑过] |