Direct3D는 단일 패스로 최대 8개의 텍스처를 기본 형식에 혼합할 수 있습니다. 여러 텍스처 혼합을 사용하면 Direct3D 애플리케이션의 프레임 속도가 크게 증가할 수 있습니다. 애플리케이션은 여러 텍스처 혼합을 사용하여 텍스처, 그림자, 반사 조명, 확산 조명 및 기타 특수 효과를 단일 패스에 적용합니다.
텍스처 혼합을 사용하려면 애플리케이션에서 먼저 사용자의 하드웨어에서 지원하는지 확인해야 합니다. 이 정보는 D3DCAPS9 구조체의 TextureCaps 멤버에서 찾을 수 있습니다. 사용자의 하드웨어에서 텍스처 혼합 기능을 쿼리하는 방법에 대한 자세한 내용은 IDirect3DDevice9::GetDeviceCaps참조하세요.
텍스처 스테이지 및 텍스처 블렌딩 캐스케이드
Direct3D는 텍스처 스테이지를 사용하여 단일 패스 다중 텍스처 혼합을 지원합니다. 텍스처 스테이지는 두 개의 인수를 사용하고 이에 대한 혼합 작업을 수행하여 추가 처리 또는 래스터화를 위해 결과를 전달합니다. 다음 다이어그램과 같이 질감 단계를 시각화할 수 있습니다.
텍스처 단계의 다이어그램
앞의 다이어그램에서와 같이 텍스처 스테이지는 지정된 연산자를 사용하여 두 인수를 혼합합니다. 일반적인 작업에는 인수의 색 또는 알파 구성 요소의 단순 변조 또는 추가가 포함되지만 12개 이상의 작업이 지원됩니다. 스테이지의 인수는 연결된 텍스처, 반복된 색 또는 알파(Gouraud 음영 중에 반복됨), 임의의 색 및 알파 또는 이전 텍스처 단계의 결과일 수 있습니다. 자세한 내용은 텍스처 혼합 작업 및 인수(Direct3D 9)참조하세요.
메모
Direct3D는 알파 혼합과 색상 혼합을 구분합니다. 애플리케이션은 색과 알파에 대한 혼합 작업과 인수를 개별적으로 설정하며 이러한 설정의 결과는 서로 독립적입니다.
여러 혼합 단계에서 사용되는 인수와 연산의 조합은 간단한 흐름 기반 혼합 언어를 정의합니다. 한 스테이지의 결과가 다른 스테이지로, 해당 단계에서 다음 스테이지로 흘러내리고, 그 다음 단계로 진행됩니다. 스테이지에서 스테이지로 결과가 흐르고 최종적으로 다각형에 래스터화되는 개념은 종종 텍스처 블렌딩 캐스케이드라고 합니다. 다음 다이어그램에서는 개별 텍스처 스테이지가 텍스처 혼합 연계를 구성하는 방법을 보여 줍니다.
텍스처 혼합 연계다이어그램
디바이스의 각 단계에는 0부터 시작하는 인덱스가 있습니다. Direct3D는 최대 8개의 혼합 단계를 허용하지만, 항상 디바이스 기능을 확인하여 현재 하드웨어에서 지원하는 스테이지 수를 결정해야 합니다. 첫 번째 혼합 단계는 인덱스 0이고, 두 번째 단계는 1이고, 인덱스 7까지입니다. 시스템은 인덱스 순서를 증가시키는 단계를 혼합합니다.
필요한 단계 수만 사용합니다. 사용하지 않는 혼합 단계는 기본적으로 사용하지 않도록 설정됩니다. 따라서 애플리케이션이 처음 두 단계만 사용하는 경우 0단계와 1단계에 대한 작업 및 인수만 설정하면 됩니다. 시스템은 두 단계를 혼합하고 비활성화된 단계를 무시합니다.
메모
애플리케이션이 일부 개체의 경우 4단계, 다른 개체의 경우 2개 등 다양한 상황에서 사용하는 단계 수가 다른 경우 이전에 사용한 모든 단계를 명시적으로 사용하지 않도록 설정할 필요가 없습니다. 한 가지 옵션은 사용하지 않는 첫 번째 단계에 대한 색 작업을 사용하지 않도록 설정하는 것입니다. 그러면 인덱스가 더 높은 모든 스테이지가 적용되지 않습니다. 또 다른 옵션은 첫 번째 텍스처 스테이지(0단계)의 색 연산을 D3DTOP_DISABLE 설정하여 텍스처 매핑을 사용하지 않도록 설정하는 것입니다. 세 번째 옵션은 텍스처 스테이지가 D3DTSS_COLORARG1이 D3DTA_TEXTURE와 같고 스테이지의 텍스처 포인터가 NULL인 경우, 이 스테이지와 이후 모든 스테이지는 처리되지 않습니다.
추가 정보는 다음 항목에 포함되어 있습니다.
- 텍스처 혼합 연산 및 인수(Direct3D 9)
- 현재 텍스처 할당(Direct3D 9)
- 혼합 스테이지 만들기(Direct3D 9)
- 알파 텍스처 블렌딩(Direct3D 9)
- 다중 패스 텍스처 블렌딩(Direct3D 9)
- 텍스처를 사용한 라이트 매핑(Direct3D 9)
관련 항목