반응형




#ifdef _DEBUG
#pragma comment( lib, "CEGUIBase_d.lib" )
#pragma comment( lib, "CEGUIDirect3D9Renderer_d.lib" )
#else
#pragma comment( lib, "CEGUIBase.lib" )
#pragma comment( lib, "CEGUIDirect3D9Renderer.lib" )
#endif

이부분을제거하고  각각 Debug, Release 모드에 해당 lib 를 속성-링크-입력에서 넣어도 됨




[CEGUI] DirectX9/Direct3D 에서 사용하기  CEGUI / 게임개발 

2012/02/02 17:34

복사http://hsengine.co.kr/20149812028


 [CEGUI] DirectX/Direct3D 에서 사용하기

CEGUI를 DirectX/Direct3D/다이렉트/다이렉트X 에 이용해서 간단히 윈도우를 띄어보겠다. 

HSEngine을 이용하지만 DirectX와 사용하는게 같으니 수정해서 사용해야 한다. 

 

 

선언:

#include <CEGUI.h>
#include <RendererModules\Direct3D9\CEGUIDirect3D9Renderer.h>
#ifdef _DEBUG
#pragma comment( lib, "CEGUIBase_d.lib" )
#pragma comment( lib, "CEGUIDirect3D9Renderer_d.lib" )
#else
#pragma comment( lib, "CEGUIBase.lib" )
#pragma comment( lib, "CEGUIDirect3D9Renderer.lib" )
#endif
CEGUI::Direct3D9Renderer* myRenderer;
 
초기화:
    CEGUI::Direct3D9Renderer& myRenderer = CEGUI::Direct3D9Renderer::bootstrapSystem( HSE.m_pd3dDevice );
    CEGUI::Renderer *pRenderer = CEGUI::System::getSingleton().getRenderer();
    CEGUI::Direct3D9Renderer* Renderer = static_cast<CEGUI::Direct3D9Renderer*>(pRenderer);
    Renderer->postD3DReset();

    CEGUI::DefaultResourceProvider* rp = 
               static_cast<CEGUI::DefaultResourceProvider*>(CEGUI::System::getSingleton().getResourceProvider());

    rp->setResourceGroupDirectory("schemes", "datafiles/schemes/");
    rp->setResourceGroupDirectory("imagesets", "datafiles/imagesets/");
    rp->setResourceGroupDirectory("fonts", "datafiles/fonts/");
    rp->setResourceGroupDirectory("layouts", "datafiles/layouts/");
    rp->setResourceGroupDirectory("looknfeels", "datafiles/looknfeel/");
    rp->setResourceGroupDirectory("lua_scripts", "datafiles/lua_scripts/");


    CEGUI::Imageset::setDefaultResourceGroup("imagesets");
    CEGUI::Font::setDefaultResourceGroup("fonts");
    CEGUI::Scheme::setDefaultResourceGroup("schemes");
    CEGUI::WidgetLookManager::setDefaultResourceGroup("looknfeels");
    CEGUI::WindowManager::setDefaultResourceGroup("layouts");
    CEGUI::ScriptModule::setDefaultResourceGroup("lua_scripts");

    SchemeManager::getSingleton().create("TaharezLook.scheme");

    System::getSingleton().setDefaultMouseCursor("TaharezLook", "MouseArrow");

    WindowManager& winMgr = WindowManager::getSingleton();
    DefaultWindow* root = (DefaultWindow*)winMgr.createWindow("DefaultWindow", "Root");
    System::getSingleton().setGUISheet(root);

    FrameWindow* wnd = (FrameWindow*)winMgr.createWindow("TaharezLook/FrameWindow", "Demo Window");
    root->addChildWindow(wnd);
    wnd->setPosition(UVector2(cegui_reldim(0.25f), cegui_reldim( 0.25f)));
    wnd->setSize(UVector2(cegui_reldim(0.5f), cegui_reldim( 0.5f)));
    wnd->setMaxSize(UVector2(cegui_reldim(1.0f), cegui_reldim( 1.0f)));
    wnd->setMinSize(UVector2(cegui_reldim(0.1f), cegui_reldim( 0.1f)));
    wnd->setText("Hello World!");


    FrameWindow* wnd2 = (FrameWindow*)winMgr.createWindow("TaharezLook/FrameWindow", "Demo Window2");
    root->addChildWindow(wnd2);
    wnd2->setPosition(UVector2(cegui_reldim(0.0f), cegui_reldim( 0.0f)));
    wnd2->setSize(UVector2(cegui_reldim(0.5f), cegui_reldim( 0.5f)));
    wnd2->setMaxSize(UVector2(cegui_reldim(1.0f), cegui_reldim( 1.0f)));
    wnd2->setMinSize(UVector2(cegui_reldim(0.1f), cegui_reldim( 0.1f)));
    wnd2->setText("HSEngine");
 
키보드와 마우스관련 CEGUI로 넘겨주기:(직접짠 클래스에 맞게 되어있으므로 수정해야된다.)

float dt=HSE.dt; CEGUI::System * ceguiPtr = CEGUI::System::getSingletonPtr(); ceguiPtr->injectTimePulse( dt ); ceguiPtr->injectMousePosition(HSObject::m_HSInput.x, HSObject::m_HSInput.y); if(HSObject::m_HSInput.BtnDown(0)) CEGUI::System::getSingleton().injectMouseButtonDown(CEGUI::LeftButton); if(HSObject::m_HSInput.BtnDown(1)) CEGUI::System::getSingleton().injectMouseButtonDown(CEGUI::RightButton); if(HSObject::m_HSInput.BtnDown(2)) CEGUI::System::getSingleton().injectMouseButtonDown(CEGUI::MiddleButton); if(HSObject::m_HSInput.BtnUp(0)) CEGUI::System::getSingleton().injectMouseButtonUp(CEGUI::LeftButton); if(HSObject::m_HSInput.BtnUp(1)) CEGUI::System::getSingleton().injectMouseButtonUp(CEGUI::RightButton); if(HSObject::m_HSInput.BtnUp(2)) CEGUI::System::getSingleton().injectMouseButtonUp(CEGUI::MiddleButton);

반응형

+ Recent posts