DirectX Graphics 레퍼런스 Direct3D C/C++ 레퍼런스 정수 D3DFVF   [목차열람] [주소복사] [슬롯비우기]
D3DFVF
 
Microsoft DirectX 9.0

D3DFVF


FVF 정수

유연한 정점 포맷 (FVF)은, 단일의 데이터 스트림에 인터리브 되어 저장 되고 있는 정점의 내용을 기술하기 위해서 사용된다. FVF 코드는, 보통, 고정 기능의 정점 처리에 의해 처리되는 데이터를 지정하기 위해서 사용된다.

정점의 포맷은, 다음의 플래그에 의해 기술된다. 정점 포맷에 대해서는, 「정점 포맷」을 참조할것.

정점 데이터 관련의 플래그

#define설명
D3DFVF_DIFFUSE정점 포맷이 디퓨즈색성분을 포함한다.
D3DFVF_NORMAL정점 포맷이 정점 법선 벡터를 포함한다. 이 플래그를, D3DFVF_XYZRHW 플래그와 함께 사용할 수 없다.
D3DFVF_PSIZE정점 포맷은 포인트 사이즈로 지정되고 있다. 이 사이즈는, 변환이 끝난 상태에서도 조명이 끝난 상태도 아닌 정점에 대해서는 카메라 공간 단위로, 또 변환이 끝난 상태로 조명 끝난 정점에 대해서는 장치 공간 단위로 나타내지고 있다.
D3DFVF_SPECULAR정점 포맷이 스펙큐러색성분을 포함한다.
D3DFVF_XYZ정점 포맷이 변환 되지 않은 정점의 위치 좌표를 포함한다. 이 플래그를, D3DFVF_XYZRHW 플래그와 함께 사용할 수 없다.
D3DFVF_XYZRHW정점 포맷이, 변환 된 정점의 위치 좌표를 포함한다. 이 플래그를 D3DFVF_XYZ 플래그 또는 D3DFVF_NORMAL 플래그와 함께 사용할 수 없다.
D3DFVF_XYZB1 ~ D3DFVF_XYZB5정점 포맷은, 위치 좌표 데이터, 및 복수의 행렬에 의한 정점 혼합 처리용의 중량감 (베타) 값의 대응수를 포함한다. 현재, Microsoft® Direct3D® 에서는 최대 3 개의 중량감값 및 4 개의 혼합 행렬로 혼합이 가능하다. 혼합 행렬의 사용법의 더 자세한 정보는, 「인덱스 첨부 정점 혼합」을 참조할것.
D3DFVF_XYZW정점 포맷이, 변환 및 클리핑 된 x, y, z w 데이터를 포함한다. ProcessVertices 는, 클립퍼를 기동하지 않고, 데이터를 클립 좌표로 출력한다. 이 정수는, 프로그래밍할 수 있는 정점 파이프라인에서의 사용을 목적으로 한 정수로, 프로그래밍할 수 있는 정점 파이프라인으로 밖에 사용하지 않는다.

텍스처 관련의 플래그

#define설명
D3DFVF_TEX0 - D3DFVF_TEX8이 정점에 대응하는 텍스처 좌표 세트의 번호. 이러한 플래그에 대응하는 숫자는 연속 번호로 되지 않다.
D3DFVF_TEXCOORDSIZEn(coordIndex)텍스처 좌표 데이터 세트를 정의한다. n 는 텍스처 좌표의 넓이를 나타낸다. coordIndex 는 텍스처 좌표의 인덱스 번호를 나타낸다. 「D3DFVF_TEXCOORDSIZEn 」 및 「텍스처 좌표」를 참조할것.

마스크값

그 외

#define설명
D3DFVF_POSITION_MASK위치 좌표 비트를 추출하는 마스크.
D3DFVF_RESERVED0, D3DFVF_RESERVED2유연한 정점 포맷의 예약 비트를 추출하기 위한 마스크값. 사용 불가.
D3DFVF_TEXCOUNT_MASK텍스처 flag bit를 추출하기 위한 마스크값.
#define설명
D3DFVF_LASTBETA_D3DCOLOR정점 위치 데이터의 마지막 베타 필드는 D3DCOLOR 형이 된다. 베타 필드의 데이터는, 행렬 팔레트 스키닝으로 행렬 인덱스를 지정하기 위해서 사용한다.
D3DFVF_LASTBETA_UBYTE4

정점 위치 데이터의 마지막 베타 필드는 UBYTE4 형이 된다. 베타 필드의 데이터는, 행렬 팔레트 스키닝으로 행렬 인덱스를 지정하기 위해서 사용한다.

// Given the following vertex data definition: 
struct VERTEXPOSITION
{
   float pos[3];
   union 
   {
      float beta[5];
      struct
      {
         float weights[4];
         DWORD MatrixIndices;  // Used as UBYTEs
      }
   }
};

FVF 가 D3DFVF_XYZB5 | D3DFVF_LASTBETA_UBYTE4 라고 선언되고 있다고 한다. weight 및 MatrixInidices 가 beta[] 에 포함되어 있다. D3DFVF_LASTBETA_UBYTE4 는 마지막 DWORD (beta[5])를 UBYTE4 라고 해석하는 것을 나타내고 있다.

마지막 베타는, 위치 포맷내의 베타의 수는 아니고, D3DRS_VERTEXBLEND 에 의해 정해진다. 예를 들어, D3DRS_VERTEXBLEND 가 D3DVBF_2WEIGHTS 으로 위치 포맷이 위에의와 우리인 경우, 마지막 베타는 beta[2] 가 되어, 이것이 4 바이트 인덱스로 DWORD 로서 사용된다.

D3DFVF_TEXCOUNT_SHIFT정점의 텍스처 좌표수를 식별하는 정수값을 몇 비트분 쉬프트 하는지를 나타내는 수. 이 값은, 예를 들어 다음과 같이 사용한다.
DWORD dwNumTextures = 1;  // Vertex has only one set of coordinates.

// Shift the value for use when creating an FVF combination.
dwFVF = dwNumTextures << D3DFVF_TEXCOUNT_SHIFT;

// Now, create an FVF combination using the shifted value.

자주(잘) 사용되는 플래그의 편성예를 다음에 나타낸다.

// Untransformed vertex for lit, untextured, Gouraud-shaded content.
dwFVF = ( D3DFVF_XYZ | D3DFVF_DIFFUSE );
// Untransformed vertex for unlit, untextured, Gouraud-shaded 
//   content with diffuse material color specified per vertex.
dwFVF = ( D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_DIFFUSE );
// Untransformed vertex for light-map-based lighting.
dwFVF = ( D3DFVF_XYZ | D3DFVF_TEX2 );
// Transformed vertex for light-map-based lighting with shared rhw.
dwFVF = ( D3DFVF_XYZRHW | D3DFVF_TEX2 );
// Heavyweight vertex for unlit, colored content with two 
// sets of texture coordinates.
dwFVF = ( D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_DIFFUSE | 
          D3DFVF_SPECULAR | D3DFVF_TEX2 );

정수 정보

헤더d3d9types.h
최저한의 operating systemWindows 98

관련 항목



© 2002 Microsoft Corporation. All rights reserved.
↑TOP