블로그 이미지
Every unexpected event is a path to learning for you. blueasa

카테고리

분류 전체보기 (2797)
Unity3D (853)
Programming (479)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (185)
협업 (61)
3DS Max (3)
Game (12)
Utility (68)
Etc (98)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (55)
Android (14)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (18)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday

'DX 디바이스'에 해당되는 글 1건

  1. 2011.01.06 Gamebryo 셋팅 1

Gamebryo 셋팅

Gamebryo/Lecture / 2011. 1. 6. 20:45

*게임브리오 설치 전에 VS 2005를 사용시 반드시 서비스팩1를 설치 

(매니패스트 관련 에러가 난다면 버그로 인해 재배포가 안되어서 에러가 나는 것이므로 꼭 패치해야 한다.)

- 추가 라이브러리

NiMesh.lib NiApplication.lib NiSystem.lib NiMain.lib NiInput.lib NiFloodgate.lib NiDx9Renderer.lib NiAnimation.lib

 

*시작

1. Win32API Project로 생성 3DProject로 설정 (빈프로젝트 생성)

2. 클래스 추가->c++클래스 추가 -> base class에 NiApplication등록-> classname은 CGameApplication

3. #include "NiApplication.h" 추가 // 게임브리오 프레임워크

4. 프로젝트 속성 -> 문자집합을 '유니코드' 설정되어 있는것을-> '설정안함'으로 설정

 

 

5. 프로젝트 속성 -> C/C++ -> 64비트 이식성 문제점 검색 -> '아니오' 설정

 

 

6. C/C++ -> 추가포함 디렉터리 -> 자신이 설치한 include폴더로 지정

7. C/C++ -> 전처리기 -> 전처리기 정의 ->WIN32;_DEBUG;_WINDOWS;NIDEBUG;STRICT 추가 

8. 링커 -> 추가라이브러리 디렉터리 -> 자신이 설치한 debuglib폴더로 지정

9. 링커 -> 입력 -> 추가 종속성 -> 위의 추가라이브러리 설정

   NiMesh.lib (메쉬), NiApplication.lib(프레임워크), NiSystem.lib(게임브리오 전반적 시스템), NiFloodgate.lib(Util),

   NiMain.lib(Base), NiInput.lib(input), NiDx9Render.lib(D3D9)

 

10. 도움말 확인

 

 

 이것을 생성한 class에 추가

11. 게임브리오 라이센스를 선언해 주어야 한다.

 #include <NiLicense.h>
NiEmbedGamebryoLicenseCode;

12. 생성한 NiApplication NiApplication::Create()에

     return NiNew CGameApplication; 으로 추가

     NiApplication* NiApplication::Create()
    {
    /*
     new -> NiNew
     delete -> NiDelete
    */
     return NiNew CGameApplication; 
     }

13. 생성한 클래스의 생성자에게 : NiApplication 생성자 추가후

    CGameApplication::CGameApplication(void)
    : NiApplication("Game ver 0.1", DEF_SCREEN_WIDTH, DEF_SCREEN_HEIGHT)

 

* 잠시! 헤더에 대한 설명

NiApplication.h

: public NiMemObject 가 하고 있다. -> 게임브리오가 질접적으로 메모리를 관리하기 위해 사용되고 있는 것

NiRefObject.h

: 참조를 관리해주는 것으로 이것을 상속받고 있는건 참조에 따라 자동삭제를 하기 위해서임(게임브리오에서 쓰는 스마트포인터 같은..)

NiMeshScreenElements.h

: 2D관련해서 작성할 때 추가

NiMesh.h

: 3D관련

 

*슈핑모드 만들기

1. 구성관리자 -> 새로만들기

 

2. 새 솔루션 구성

 

3. 전행처리기

 

4. lib폴더를 shipping으로 추가

 

5. 헤더는 기본헤더로

 

=> shipping모드는 debug 모드보다 더 가볍다.

 

* 직접 초기화 하기(Dx Device Create)

 

 

직접 초기화 하기 위해 CreateRender() 함수를 상속받아와서 아래 코드를 작성한다.

bool CGameApplication:::CreateRenderer()
{
 unsigned int uiWidth = m_pkAppWindow->GetWidth();
 unsigned int uiHeight = m_pkAppWindow->GetHeight();

 m_spRenderer = NiDX9Renderer::Create(uiWidth, uiHeight,
  NiDX9Renderer::USE_NOFLAGS, GetWindowReference(), 
  GetRenderWindowReference());

 if (m_spRenderer == NULL)
 {
  NiMessageBox("Unable to create a renderer!", "Renderer Failure!");
  QuitApplication();
  return false;
 }
 return true;
}

단, #include <NiDX9Render.h>를 추가해야 한다.

이렇게 하면 앞에서 한 예제와 다르게 다이어로그가 뜨면서 어떤 형식으로 실행할 것인지 물어보지 않는다.

왜냐하면 직접 DX로 한다고 선언했기 때문에..

- 다이어로그 뜰때

 

* 중요한 m_spRendere!

DX 디바이스 가져오기

//--직접적으로DirectX를제어하고싶을때

             NiRenderer* renderer = m_spRenderer;

             NiDX9Renderer* pDX9Renderer  = ((NiDX9Renderer*)renderer);

             LPDIRECT3DDEVICE9 pp =pDX9Renderer->GetD3DDevice();

 

-> 스마트 포인터 때문에 NiRenderer* 포인터로 한번 받아온다.


출처 : http://blog.naver.com/fantaldh/40067964992

[출처] Gamebryo 셋팅|작성자 대봉이

반응형

'Gamebryo > Lecture' 카테고리의 다른 글

무기잔상효과  (0) 2011.02.08
캐릭터 기울기 연산  (0) 2011.02.08
게임브리오 강좌(?) 링크  (3) 2010.04.14
Gamebryo 2.5  (0) 2010.04.12
[링크] 게임브리오 강좌  (0) 2010.04.10
Posted by blueasa
, |