DirectX Graphics 레퍼런스 Direct3D C/C++ 레퍼런스 인터페이스 IDirect3DDevice9 DrawRectPatch [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
현재 설정되어 있는 스트림을 사용해, 직사각형의 패치를 드로잉(Drawing) 한다.
구문
HRESULT DrawRectPatch(
UINT Handle, const float* pNumSegs, const D3DRECTPATCH_INFO* pRectPatchInfo );
파라미터
- Handle
- [in] 드로잉(Drawing) 하는 직사각형의 패치에의 핸들.
- pNumSegs
- [in] 테설레이션 시에, 직사각형 패치의 각 엣지를 분할하는 세그먼트(segment)의 수를 나타내는, 4 개의 부동 소수점값의 배열의 포인터. 「D3DRECTPATCH_INFO 」를 참조할것.
- pRectPatchInfo
- [in] D3DRECTPATCH_INFO 구조체의 포인터. 드로잉(Drawing) 하는 직사각형의 패치를 기술한다.
반환값
성공했을 경우는,D3D_OK 를 돌려준다.
실패했을 경우의 반환값은 다음대로.
D3DERR_INVALIDCALL 메서드의 호출이 무효이다. 예를 들어, 메서드의 파라미터에 무효인 값이 설정되어 있는 경우 등이다.
주의
정적 패치의 경우 :Microsoft® Direct3D® 가 정보를 캡춰 해 캐쉬할 수 있도록, 정점 셰이더를 설정해, 적절한 스트림을 설정해,pRectPatchInfo 파라미터내에서 패치 정보를 공급해, 핸들을 지정하는 것. pRectPatchInfo 이 NULL 로 설정된 상태로 IDirect3DDevice9::DrawRectPatch 를 호출하는 것으로, 패치를 효율적으로 드로잉(Drawing) 할 수 있다. 캐쉬한 패치를 드로잉(Drawing) 할 때는, 현재 설정되어 있는 스트림은 무시된다. pNumSegs 의 새로운 값을 지정해, 캐쉬한pNumSegs를 덧쓰기하는 것. 캐쉬한 패치를 렌더링 할 때는, 캡춰시로 설정한 것과 같은 정점 셰이더를 설정할 필요가 있다.
핸들을 사용해 IDirect3DDevice9::DrawRectPatch 를 호출하면, 이전의 IDirect3DDevice9::DrawTriPatch 호출로 캐쉬한 같은 핸들이 무효가 된다.
동적 패치에 대해서는, 패치의 렌더링 마다 패치 데이터가 변화하기 위해(때문에), 정보를 캐쉬하는 것은 효율적은 아니다. 애플리케이션은,Handle 를 0 으로 설정하는 것으로, 이 정보를 Direct3D 에게 전할 수가 있다. 이 경우, Direct3D 는, 현재 설정되어 있는 스트림 및 pNumSegs 값을 사용해 패치를 드로잉(Drawing) 해, 정보의 캐쉬를 실시하지 않는다. Handle 를 0 으로 설정한 상태로 pRectPatchInfo 를 NULL 로 설정과 무효가 된다.
참조
IDirect3DDevice9::DeletePatch ,고차원 기본도형의 사용법