Direct3D 는 기본적으로지정된 버텍스 순서(시계방향)를 가지고 전면 폴리곤인지 후면폴리곤인지 확인해서 스스로 후면 추려내기를 한다. 하지만 이런작업을 원치않거나 후면만 그려보고싶거나 그럴 때가있으니 LPDIRECT3DDEVICE9 g_pD3DDevice; //D4DRS_CULLMODE g_pD3DDevice->SetRenderState(D3DRS_CULLMODE, Value); Value 에 다음값중 하나를 넣어주면 된다. D3DCULL_NONE : 후면 추려내기를 완전히 끈다. D3DCULL_CW : 시계방향 두르기를 가진 삼각형을 추려낸다.( 시계방향 버텍스로 만들어진 메시의 뒷면만 볼 수 있다., 또는 시계반대방향 버텍스로 만들어진 메시의 앞면을 볼 수 있기도 하다.) D3DCULL_CCW :..
Sets a single device render-state parameter. Syntax C++ HRESULT SetRenderState( [in] D3DRENDERSTATETYPE State, [in] DWORD Value ); Parameters State [in] Type: D3DRENDERSTATETYPE Device state variable that is being modified. This parameter can be any member of the D3DRENDERSTATETYPE enumerated type. Value [in] Type: DWORD New value for the device render state to be set. The meaning of this parame..
Direct3D를 이용하기 위해서는 두가지 객체가 필요하다. 일단 3D 그래픽에 관련된 일을 해주는 하드웨어 장치가 있어야 하고 컴퓨터의 상황에 맞추어 앞서말한 하드웨어 장치를 만들어주는 장시가 있어야 한다. LPDIRECT3D9 g_pD3D; Create Microsoft Direct3D objects and set up the environment. This interface includes methods for enumerating and retrieving capabilities of the device. 시스템의 물리적 하드웨어 장치에 대한 정보를 얻고 , 원하는 조건에 따라, 하드웨어 성능에 따라 IDirect3DDevice9 객체 생성해주는애 LPDIRECT3DDEVICE9 g_pD3DDev..
모든 Direct3D 객체는 COM 객체이다(http://danac.tistory.com/37) 해당 객체는 사용자가 직접 new delete 하는것이 아니라 생성, 소멸 위한 별도의 함수가 존재한다고 하였다. IDirect3DDevice9 , IDirect3D9도 마찬가지. LPDIRECT3D9 g_pD3D; LPDIRECT3DDEVICE9 g_pD3DDevice; 우리가 객체를 이 순서로 생성을 했다. 그렇다면 해제는? g_pD3D로 g_pD3DDevice 를 만들었으니까 g_pD3DDevice가 아직 있는데 g_pD3D 가 없어지면 안되지 않을까? g_pD3DDevice->Release(); g_pD3D->Release(); 해당 순서로 Release 를 불러서 해제 해주면 된다. 좀더 안전하게 해..
버퍼 1개를 놓고 지웠다 그렸다 지웠다 그렸다 지웠다 그렸다 -> Flickering(깜박이는 현상) 발생! 따라서, 대부분의 게임, 혹은 실시간3차원 그래픽은 부드런 애니메이션위해 2개 이상의 화면 (buffer) 사용 우리가 내리는 모든 렌더 명령에 따라 대부분 후면 버퍼에 그린 후 특정한 명령을 내려 후면 버퍼를 보이는 화면인 전면버퍼로 전송하는 방식 이러한 2개 이상의 화면(또는 표면, 버퍼) 을 하나의컬렉션으로 관리하고 이를 스왑체인이라 부른다. cf) 스왑체인은 IDirect3DSwapChain9 인터페이스를 통해 이용가능, but 우리는 IDirect3DDevice9 객체를 이용해 그림을 그리고 버퍼교환 명령만 해주면 Direct3D 가 알아서 관리해준다. 따라서 우리가 해당 인터페이스 이용..