DirectX Graphics 레퍼런스 Direct3D C/C++ 레퍼런스 인터페이스 IDirect3DDevice9 ProcessVertices [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
정점 셰이더로 정의되고 있는 정점 처리를 일련의 입력 데이터 스트림에 적용해, 인터리브 된 정점 데이터의 단일 스트림을 목적지 정점 버퍼에 생성한다.
구문
HRESULT ProcessVertices(
UINT SrcStartIndex, UINT DestIndex, UINT VertexCount, IDirect3DVertexBuffer9 *pDestBuffer, IDirect3DVertexDeclaration9* pVertexDecl, DWORD Flags );
파라미터
- SrcStartIndex
- [in] 로드하는 최초의 정점의 인덱스.
- DestIndex
- [in] 결과를 저장 하는 목적지 정점 버퍼내의 최초의 정점의 인덱스.
- VertexCount
- [in] 처리하는 정점의 수.
- pDestBuffer
- [in] IDirect3DVertexBuffer9 인터페이스의 포인터. 인터리브 된 정점 데이터의 스트림을 나타내는 목적지 정점 버퍼이다.
- pVertexDecl
- [in] 출력 정점 데이터 선언을 나타내는 IDirect3DVertexDeclaration9 인터페이스의 포인터. 버전 3.0 이후의 정점 셰이더를 현재의 정점 셰이더로서 설정하는 경우는, 출력 정점 선언이 존재해야 한다.
- Flags
- [in] 처리 옵션. 디폴트 처리에 대해서는 이 파라미터를 0 으로 설정한다. D3DPV_DONOTCOPYDATA 로 설정 하면, 정점의 처리에 무관계한 정점 데이터를 복사처 버퍼에 복사 하는 것을 막을 수가 있다.
반환값
성공했을 경우는,D3D_OK 를 돌려준다.
실패했을 경우는,D3DERR_INVALIDCALL 를 돌려준다.
주의
이 메서드의 처리 순서를 다음에 나타낸다.
- 월드 + 뷰 + 투영 행렬을 사용해, 정점을 투영 공간에 변환 한다.
- 뷰포트의 설정을 사용해, 화면 좌표를 계산한다.
- 클리핑이 유효한 경우는, 클립 코드를 계산해, 목적지 정점 버퍼와 관련지을 수 있었던 내부 버퍼에 저장 한다. 정점이 절두체의 내부에 있는 경우는, 그 화면 좌표를 계산한다. 정점이 절두체의 외부에 있는 경우는, 정점을 목적지 정점 버퍼에 투영 공간의 좌표로 보존한다.
- 그 외의 주의 :사용자는 내부 크리프코드밧파에 액세스 할 수 없다. 삼각형 또는 그 외의 기본도형에 대해서는, 클립은 행해지지 않는다.
목적지 정점 버퍼 pDestBuffer 는, 제로 이외의 FVF 파라미터를 지정해 생성 해야 한다. IDirect3DDevice9::CreateVertexBuffer 메서드의 호출에 대해 지정하는 유연한 정점 포맷 (FVF) 코드는, 목적지 정점 버퍼에 존재하는 정점 요소를 지정하고 있다.
Microsoft® Direct3D® 가 텍스처 좌표를 생성 할 때나, 입력 텍스처 좌표를 복사 또는 변환 할 경우에, 출력 텍스처 좌표 포맷이 Direct3D 가 생성하는 것보다 많은 텍스처 좌표 성분을 정의하는 경우, Direct3D 는 이러한 추가 성분을 변경하지 않는다.
참조
장치의 종류와 정점 처리의 요건