프로그래밍 2016. 10. 7. 13:13
728x90

 

환경매핑 - 실시간 큐브맵 만들기, 풀씬 복사

 

 

매 프레임 만들어지는 풀씬 이미지를, 큐브맵에 복사

이렇게 만들어지는 큐브맵을 환경매핑에 사용해 보았다

이렇게 하면, 실시간으로 모든 주변환경을 환경매핑에 보여줄수 있으나...

 

역시나, 동적으로 주변환경이 매핑되는 것은 좋으나,

렌더링 부하가 없는대신, 제대로된 6면이 아니기 때문에, 이상하게 보인다

게다가, 자기 스스로도 드로우되기 때문에, 자기 스스로가 비쳐 보이는데

 

 

 

 

 

 

간단히 구현에 대해 살펴보자면...

 

1. 미리 큐브맵을 한번만 생성해 두고

LPDIRECT3DCUBETEXTURE9 m_pD3DCubeMap;

device->CreateCubeTexture( _iMakeSize, 1, D3DUSAGE_RENDERTARGET, d3dF, D3DPOOL_DEFAULT, &m_pD3DCubeMap, NULL );

 

큐브맵을 미리 생성

실제 렌더링에 이용할때는 렌더타겟으로,

단순 카피용으로 사용할때는 텍스쳐로 생성

 

 

2. 큐브맵이 필요할때마다,  (카메라와의 거리가 가깝다던지)

미리 만들어둔 풀씬 텍스쳐를 카피하여, 큐브맵을 갱신

 

갱신방법은 텍스쳐 카피인데,

 

큐브맵의 서페이스를 가져와서

device->GetCubeMapSurface( (D3DCUBEMAP_FACES)i, 0, &pT )

 

대상텍스쳐의 표면을 큐브맵의 서페이스로 카피

device->StretchRect( pD, NULL, pT, NULL, D3DTEXF_LINEAR )

 

이때 주의할점은 대상과 목적지의 텍스쳐의 d3dFormat 은 동일해야

카피를 실패하지 않는다

 

 

3. 환경매핑이 필요한 오브젝트는 큐브맵으로 반사, 굴절 등을 처리

 

 

728x90

'프로그래밍' 카테고리의 다른 글

동차좌표계  (0) 2016.10.21
volume fog - 구현 정리중  (0) 2016.10.20
퍼지 (Fuzzy) 프로그래밍 - 2  (0) 2016.09.09
퍼지 (Fuzzy) 프로그래밍 - 1  (0) 2016.09.09
오브젝트 바닥 충돌 처리  (3) 2016.04.18
posted by BK dddDang
: