D3DXComputeTangentFrameEx 함수
메시에서 탄젠트 프레임 계산을 수행합니다. 탄젠트, 이항 및 선택적으로 일반 벡터가 생성됩니다. 단수는 가장자리를 그룹화하고 꼭짓점을 분할하여 필요에 따라 처리됩니다.
구문
HRESULT D3DXComputeTangentFrameEx(
_In_ ID3DXMesh *pMesh,
_In_ DWORD dwTextureInSemantic,
_In_ DWORD dwTextureInIndex,
_In_ DWORD dwUPartialOutSemantic,
_In_ DWORD dwUPartialOutIndex,
_In_ DWORD dwVPartialOutSemantic,
_In_ DWORD dwVPartialOutIndex,
_In_ DWORD dwNormalOutSemantic,
_In_ DWORD dwNormalOutIndex,
_In_ DWORD dwOptions,
_In_ const DWORD *pdwAdjacency,
_In_ FLOAT fPartialEdgeThreshold,
_In_ FLOAT fSingularPointThreshold,
_In_ FLOAT fNormalEdgeThreshold,
_Out_ ID3DXMesh **ppMeshOut,
_Out_ ID3DXBuffer **ppVertexMapping
);
매개 변수
-
pMesh [in]
-
형식: ID3DXMesh*
입력 ID3DXMesh 메시 개체에 대한 포인터입니다.
-
dwTextureInSemantic [in]
-
형식: DWORD
텍스처 좌표 입력 의미 체계를 지정합니다. D3DX_DEFAULT 경우 함수는 텍스처 좌표가 없다고 가정하고 일반 벡터 계산을 지정하지 않으면 함수가 실패합니다.
-
dwTextureInIndex [in]
-
형식: DWORD
메시에 여러 텍스처 좌표가 있는 경우 탄젠트 프레임 계산에 사용할 텍스처 좌표를 지정합니다. 0이면 메시에 단일 텍스처 좌표만 있습니다.
-
dwUPartialOutSemantic [in]
-
형식: DWORD
U 텍스처 좌표와 관련하여 부분 파생이 저장되는 위치를 설명하는 형식의 출력 의미 체계(일반적으로 D3DDECLUSAGE_TANGENT)를 지정합니다. D3DX_DEFAULT 경우 이 부분 파생은 저장되지 않습니다.
-
dwUPartialOutIndex [in]
-
형식: DWORD
U 텍스처 좌표와 관련하여 부분 파생을 저장할 의미 체계 인덱스를 지정합니다.
-
dwVPartialOutSemantic [in]
-
형식: DWORD
V 텍스처 좌표와 관련하여 부분 파생이 저장되는 위치를 설명하는 D3DDECLUSAGE 형식(일반적으로 D3DDECLUSAGE_BINORMAL)을 지정합니다. D3DX_DEFAULT 경우 이 부분 파생은 저장되지 않습니다.
-
dwVPartialOutIndex [in]
-
형식: DWORD
V 텍스처 좌표와 관련하여 부분 파생을 저장할 의미 체계 인덱스를 지정합니다.
-
dwNormalOutSemantic [in]
-
형식: DWORD
각 꼭짓점에서 일반 벡터가 저장되는 위치를 설명하는 출력 표준 의미 체계(일반적으로 D3DDECLUSAGE_NORMAL)를 지정합니다. D3DX_DEFAULT 경우 이 일반 벡터는 저장되지 않습니다.
-
dwNormalOutIndex [in]
-
형식: DWORD
각 꼭짓점에 일반 벡터를 저장할 의미 체계 인덱스를 지정합니다.
-
dwOptions [in]
-
형식: DWORD
탄젠트 프레임 계산 옵션을 지정하는 하나 이상의 D3DXTANGENT 플래그 조합입니다. NULL인 경우 다음 옵션이 지정됩니다.
D3DXTANGENT_GENERATE_IN_PLACE 설정되지 않으면 입력 메시가 복제됩니다. 따라서 원래 메시에는 계산된 일반 벡터 및 부분 파생 데이터를 저장할 충분한 공간이 있어야 합니다.
-
pdwAdjacency [in]
-
형식: const DWORD*
메시의 각 면에 대해 세 개의 인접 항목을 지정하는 얼굴당 3개의 DWORD 배열에 대한 포인터입니다. 이 배열의 바이트 수는 3 * GetNumFaces * sizeof(DWORD) 이상이어야 합니다.
-
fPartialEdgeThreshold [in]
-
형식: FLOAT
두 부분 파생 항목이 서로 호환되지 않는 것으로 간주되는 각도의 최대 코사인을 지정합니다. 인접한 삼각형에 있는 두 부분 파생물 방향의 점 곱이 이 임계값보다 작거나 같으면 이러한 삼각형 간에 공유되는 꼭짓점이 분할됩니다.
-
fSingularPointThreshold [in]
-
형식: FLOAT
꼭짓점이 단수로 간주되는 부분 파생물의 최대 크기를 지정합니다. 인접한 탄젠트 프레임이 있는 지점에서 여러 삼각형이 인시던트이므로(예: 구의 맨 위) 서로를 완전히 취소하면 부분 파생 요소의 크기가 감소합니다. 크기가 이 임계값보다 작거나 같으면 꼭짓점이 포함된 모든 삼각형에 대해 분할됩니다.
-
fNormalEdgeThreshold [in]
-
형식: FLOAT
fPartialEdgeThreshold와 마찬가지로 삼각형 간에 공유되는 꼭짓점이 분할되는 임계값을 초과하는 두 표준 사이의 각도의 최대 코사인을 지정합니다. 두 노멀의 점 곱이 임계값보다 작으면 공유 꼭짓점이 분할되어 인접 삼각형 사이에 단단한 가장자리가 형성됩니다. 점 제품이 임계값을 초과하면 인접 삼각형의 노멀이 보간됩니다.
-
ppMeshOut [out]
-
형식: ID3DXMesh**
계산된 탄젠트, 이항 및 일반 벡터 데이터를 수신하는 출력 ID3DXMesh 메시 개체에 대한 포인터의 주소입니다.
-
ppVertexMapping [out]
-
형식: ID3DXBuffer**
이 메서드에서 계산한 새 꼭짓점의 매핑을 원래 꼭짓점과 매핑하는 출력 ID3DXBuffer 버퍼 개체에 대한 포인터의 주소입니다. 버퍼는 DWORD 배열이며 배열 크기는 ppMeshOut의 꼭짓점 수로 정의됩니다.
반환 값
형식: HRESULT
함수가 성공하면 반환 값이 S_OK. 함수가 실패하면 반환 값은 D3DERR_INVALIDCALL, D3DXERR_INVALIDDATA, E_OUTOFMEMORY 중 하나일 수 있습니다.
설명
이 함수의 간소화된 버전은 D3DXComputeTangentFrame으로 사용할 수 있습니다.
각 꼭짓점의 계산된 일반 벡터는 항상 단위 길이를 가지도록 정규화됩니다.
직교 카티전 좌표를 계산하기 위한 가장 강력한 솔루션은 D3DXTANGENT_ORTHOGONALIZE_FROM_U 및 D3DXTANGENT_ORTHOGONALIZE_FROM_V 플래그를 설정하지 않고 직교 좌표가 텍스처 좌표와 v 모두에서 계산되도록 하는 것입니다. 그러나 이 경우 u 또는 v가 0인 경우 함수는 각각 D3DXTANGENT_ORTHOGONALIZE_FROM_V 또는 D3DXTANGENT_ORTHOGONALIZE_FROM_U 사용하여 직교 좌표를 계산합니다.
요구 사항
요구 사항 | 값 |
---|---|
헤더 |
|
라이브러리 |
|
참고 항목