DirectX Graphics 프로그래밍 가이드 고정 기능 파이프라인 텍스처 텍스처 좌표 텍스처 좌표 처리 텍스처 좌표의 자동 생성   [목차열람] [주소복사] [슬롯비우기]
텍스처 좌표의 자동 생성
 
Microsoft DirectX 9.0

텍스처 좌표의 자동 생성


시스템은, 변환 후의 카메라 공간에서의 정점의 위치나 법선을 텍스처 좌표로서 사용할 수 있다. 또, 큐브 환경 맵을 실행하기 위한 3 요소 벡터를 계산하는 일도 가능하다. 정점으로써 명시적으로 지정하는 텍스처 좌표와 같이, 자동 생성된 텍스처 좌표를, 텍스처 좌표변화용의 입력으로서 사용할 수 있다.

텍스처 좌표의 자동 생성에 의해, 정점 포맷에서의 명시적인 텍스처 좌표의 필요성을 배제할 수 있으므로, 지오메트리 데이터에 필요한 대역폭을 큰폭으로 삭감할 수 있다. 많은 경우, 시스템으로 생성된 텍스처 좌표는, 특수 효과를 낳는 변환과 함께 사용할 수 있다. 물론, 이 기능은 특수한 용도에 사용되는 것이어, 명시적인 텍스처 좌표를 사용하는 케이스도 많이 있다.

텍스처 좌표의 자동 생성의 구성

C++ 의 경우, (D3DTEXTURESTAGESTATETYPE 열거형으로부터의) D3DTSS_TEXCOORDINDEX 텍스처 스테이지 스테이트를 사용해, 텍스처 좌표의 생성 방법을 제어한다.

보통, 이 스테이트는, 정점 포맷으로 encode 된 특정의 텍스처 좌표 세트를 사용하도록(듯이) 시스템에 알린다. 이 스테이트에 할당하는 값안에, D3DTSS_TCI_CAMERASPACENORMAL, D3DTSS_TCI_CAMERASPACEPOSITION, 또는 D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR 플래그를 포함했을 경우, 시스템으로 실행되는 처리는 크게 달라 진다. 이러한 플래그의 어느쪽이든에서도 존재하고 있을 때, 텍스처 스테이지는 정점 포맷의 텍스처 좌표를 무시해, 시스템이 생성하는 좌표를 우선한다. 각 플래그의 의미는, 다음과 같다.

이러한 플래그는 서로 배타적이다. 이러한 플래그의 어느쪽이든을 사용하는 경우는, 텍스처 랩핑 모드를 결정하기 위해서(때문에) 시스템으로 사용하는 인덱스값을 지정할 수 있다.

다음 코드는, C++ 에서의 이러한 플래그의 사용 방법을 나타내고 있다.

/*
 * For this example, the d3dDevice variable is a valid
 * pointer to an IDirect3DDevice9 interface.
 *
 * Use the vertex position (camera-space) as the input 
 * texture coordinates for this texture stage, and the 
 * wrap mode set in the D3DRENDERSTATE_WRAP1 render state.
 */
d3dDevice->SetTextureStageState( 0, D3DTSS_TEXCOORDINDEX, 
                                   D3DTSS_TCI_CAMERASPACEPOSITION | 1 );

자동 생성된 텍스처 좌표는, 텍스처 좌표변화의 입력값으로 매우 편리하고, 또 큐브 환경 맵의 3 요소 벡터를 계산할 필요가 없다고 하는 점에서도 편리하다.

구면의 맵핑에서는, 모델링시에 미리 계산된, 크롬의 구체에 의해 반사된 환경 전체를 포함한 텍스처 맵을 사용한다. Microsoft® Direct3D® 에는 렌더링 스테이트 D3DTSS_TCI_CAMERASPACENORMAL 를 사용하는 텍스처 좌표 생성 기능이 있어, 카메라 공간에서의 정점의 법선을 사용해, 텍스처 변환에 의해, 텍스처 좌표를 생성한다. 더 자세한 정보는, 「Sphere Map 샘플」을 참조할것.

관련 항목



© 2002 Microsoft Corporation. All rights reserved.
↑TOP