특수 효과(Direct3D 9)

이 항목에는 텍스처 좌표 처리로 수행된 특수 효과의 예가 포함되어 있습니다.

모델에서 텍스처 애니메이션(변환 또는 회전)

  • 꼭짓점 형식으로 2D 텍스처 좌표를 정의합니다.

    // Use a single texture, with 2D texture coordinates. This
    // bit-pattern should be expanded to include position, normal, 
    // and color information as needed.
    DWORD dwFVFTex = D3FVF_TEX1 | D3DFVF_TEXCOORDSIZE2(0);
    
  • 2D 텍스처 좌표를 사용하도록 래스터라이저를 구성합니다.

    SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2);
    
  • 적절한 텍스처 좌표 변환 매트릭스를 정의하고 설정합니다.

    // M is a D3DMATRIX being set to translate texture
    // coordinates in the U and V directions.
    //      1   0  0  0
    //      0   1  0  0
    //      du dv  1  0 (du and dv change each frame)
    //      0   0  0  1
    
    D3DMATRIX M = D3DXMatrixIdentity(); // declared in d3dutil.h
    M._31 = du; 
    M._32 = dv; 
    

모델 카메라 공간 위치의 선형 함수로 텍스처 좌표 만들기

  • D3DTSS_TCI_CAMERASPACEPOSITION 플래그를 사용하여 텍스처 변환에 대한 입력으로 카메라 공간에서 꼭짓점 위치를 전달하도록 시스템에 지시합니다.

    // The input vertices have no texture coordinates, saving 
    // bandwidth. Three texture coordinates are generated by 
    // using vertex position in camera space (x, y, z).
    SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEPOSITION);
    
  • 래스터라이저에 2D 텍스처 좌표를 예상하도록 지시합니다.

    // Two output coordinates are used.
    SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2);
    
  • 선형 함수를 적용하는 행렬을 정의하고 설정합니다.

    // Generate texture coordinates as linear functions 
    // so that:
    //      u = Ux*x + Uy*y + Uz*z + Uw 
    //      v = Vx*x + Vy*y + Vz*z + Vw
    // The matrix M for this case is:
    //      Ux  Vx  0  0 
    //      Uy  Vy  0  0 
    //      Uz  Vz  0  0 
    //      Uw  Vw  0  0 
    
    SetTransform(D3DTS_TEXTURE0, &M);
    

입방 환경 맵을 사용하여 환경 매핑 수행

  • D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR 플래그를 사용하여 입방형 매핑을 위한 리플렉션 벡터로 텍스처 좌표를 자동으로 생성하도록 시스템에 지시합니다.

    SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR);
    
  • 래스터라이저에 세 개의 요소가 있는 텍스처 좌표를 예상하도록 지시합니다.

    SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT3);
    

프로젝티브 텍스처링 수행

  • D3DTSS_TCI_CAMERASPACEPOSITION 플래그를 사용하여 꼭짓점 위치를 텍스처 변환 매트릭스에 입력으로 전달하도록 시스템에 지시합니다.

    SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEPOSITION);
    
  • 텍스처 프로젝션 행렬을 만들고 적용합니다. 이는 이 설명서의 scope 넘어 여러 업계 문서의 주제입니다.

  • 래스터라이저에 3개 요소의 프로젝트된 텍스처 좌표를 예상하도록 지시합니다.

    // Two output coordinates are used.
    
    SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTF_PROJECTED | D3DTTFF_COUNT3);
    

텍스처 좌표 처리