DirectX Graphics 프로그래밍 가이드 고정 기능 파이프라인 텍스처 텍스처 혼합   [목차열람] [주소복사] [슬롯비우기]
텍스처 혼합
 
Microsoft DirectX 9.0

텍스처 혼합


Microsoft® Direct3D® 에서는, 단일의 패스로, 최대 8 개의 텍스처를 원시적으로 블렌드 할 수 있다. 멀티 텍스처 혼합을 사용하면, Direct3D 애플리케이션의 frame rate를 큰폭으로 올릴 수가 있다. 애플리케이션은, 멀티 텍스처 혼합을 채용해, 텍스처, 그림자, 스펙큐러 라이트, 디퓨즈 라이트등의 특수 효과를 단일 패스로 적용할 수 있다.

텍스처 혼합을 사용하는 경우, 사용자의 하드웨어가 텍스처 혼합을 지원 하고 있을지 어떨지를 최초로 조사할 필요가 있다. 이러한 정보는,D3DCAPS9 구조체의 TextureCaps 멤버에 보관 유지되고 있다. 텍스처 혼합 기능에 대해 사용자의 하드웨어에 문의하는 방법의 더 자세한 정보는, 「IDirect3DDevice9::GetDeviceCaps 」를 참조할것.

텍스처 스테이지와 텍스처 혼합 cascade

Direct3D 는, 텍스처 스테이지를 사용해, 싱글 패스의 멀티 텍스처 혼합을 지원 하고 있다. 텍스처 스테이지에는 2 개의 인수를 받아, 혼합 처리를 실시해, 후속의 처리 또는 래스터화에 결과를 건네준다. 텍스처 스테이지는, 다음의 그림과 같이 도식화할 수 있다.

블렌드 된 출력

위의 그림에 나타나듯이 텍스처 스테이지는 지정의 오퍼레이터를 사용해 2 개의 인수를 블렌드 한다. 일반적인 조작에는, 인수의 색 또는 알파 성분의 단순 곱셈이나 덧셈이 있지만, 24 이상의 조작이 지원 되고 있다. 스테이지의 인수는, 관련지을 수 있었던 텍스처, 보간색 또는 보간 알파 (gouraud shading중의 보간), 임의의 색과 알파, 또는 이전의 텍스처 스테이지로부터의 결과이다. 더 자세한 정보는, 「텍스처 혼합 처리와 인수」를 참조할것.

  Direct3D 에서는, 컬러 혼합과 알파 혼합을 구별한다. 애플리케이션에서는, 색과 알파에 대해서 개별적으로 혼합 처리와 인수를 설정해, 이러한 설정이 서로의 결과에 영향을 줄 것은 없다.

멀티 혼합 스테이지에서 사용되는 인수와 처리의 편성은, 단순한 플로우를 기본으로 하는 혼합 언어를 정의한다. 1 개의 스테이지의 결과는 다른 스테이지에 흘러 다음에 그 스테이지의 결과가 다음의 스테이지에 흘러 이하와 같이 계속된다. 스테이지에서 스테이지에의 흐름이 최종적으로 다각형상에서 래스터화 되는 개념을, 보통,텍스처 혼합 cascade라고 부른다. 다음 그림은 개별의 텍스처 스테이지가 어떻게 텍스처 혼합 cascade를 구성하는지를 나타내고 있다.

텍스처 혼합 cascade

장치내의 각 스테이지는, 0 으로부터 시작되는 인덱스를 갖는다. Direct3D 에서는, 최대 8 개의 혼합 스테이지를 이용할 수 있다. 다만, 현재의 하드웨어로 지원 되는 스테이지수를 판단하기 위해서(때문에), 장치 기능을 조사할 필요가 있다. 제 1 혼합 스테이지는 인덱스 0 에 있어, 제 2 스테이지는 인덱스 1 에 있어, 이하 인덱스 7 까지 같이이다. 시스템은, 인덱스의 승순에 스테이지를 블렌드 한다.

필요한 수만의 스테이지를 사용한다. 사용하지 않는 혼합 스테이지는 디폴트로 무효가 된다. 애플리케이션이 최초의 2 개의 스테이지만을 사용하는 경우는, 스테이지 0 으로 1 에 관해서만 설정 조작과 인수가 필요하다. 시스템은 2 개의 스테이지를 블렌드 해, 무효인 스테이지를 무시한다.

퍼포먼스에 관한 주의  개체에 따라서는 4 개의 스테이지를 사용하거나 2 개의 스테이지를 사용하는 등, 상황에 따라 애플리케이션으로 사용하는 스테이지의 수가 바뀌는 경우는, 이전에 사용한 모든 스테이지를 명시적으로 무효로 하지 않아도 좋다. 제 1 의 옵션으로서는, 최초의 미사용의 스테이지에 대해서 컬러 처리를 무효 하면, 그 스테이지보다 인덱스가 큰 스테이지는 적용되지 않게 된다. 제 2 의 옵션으로서는, 컬러 처리를 최초의 텍스처 스테이지 (스테이지 0)로 설정 하면, 모든 텍스처 맵핑을 정리해 무효로 할 수 있다. 제 3 의 옵션으로서는, 텍스처 스테이지의 D3DTSS_COLORARG1 가 D3DTA_TEXTURE 와 동일하고, 텍스처 포인터가 NULL 의 경우, 그 스테이지 및 이후의 모든 스테이지는 처리되지 않는다.

더 자세한 정보는, 다음 주제를 참조할것.



© 2002 Microsoft Corporation. All rights reserved.
↑TOP