CEGUI 사용시 GUI를 제외한 렌더링화면이 나오지 않거나 이상하게 렌더링될때  CEGUI

2009/06/14 20:16

복사http://blog.naver.com/woocom2/90048906712


CEGUI를 내가 사용하는 프레임워크에 붙여봤다.
그런데 이상한 현상하게도 GUI를 제외한 메쉬나 오브젝트들이 렌더되지 않았다.
처음시작에 잠깐 1프레임 보이다 사라진다.

포럼과 CEGUI카페를 찾아봤지만 겨우겨우 포럼에서 방법을 찾았다.
CEGUI가 디바이스를 가지고 RenderState를 변경하는 듯했다.
그래서 CEGUI가 렌더되고 나서는 RenderState를 복구해주지 않을 경우 렌더화면이 외곡되거나 나타나지 않는 것이다.
이것을 해결하기 위해서는 
IDirect3DStateBlock9* 인터페이스를 사용해서 RenderState를 저장했다가 매 프레임마다 복구시켜주는 과정이 필요하다.

사용법은 이렇다.
//...
 IDirect3DStateBlock9*            m_OriRenderState;        
//...

// 렌더링 세팅이 끝난후
device->CreateStateBlock(D3DSBT_ALL, &m_OriRenderState);

// 렌더링
if( SUCCEEDED( device->BeginScene() ) )
{
        m_OriRenderState->Apply();           // CEGUIDirectX9렌더러가 RenderState를 변경시키므로 원래 랜더상태 복원
        DrawScene();                               // 카메라 위치와 캐릭터, 임의로 생성된 박스를 그린다.        
        CEGUI::System::getSingleton().renderGUI();
        pTextOut->DrawText(fpsText);        // 프레임을 나타낸다.        
        device->EndScene();
        device->Present(0,0,0,0);
}

반응형

+ Recent posts