Primitive 종류 설명
http://tadis.tistory.com/category/Direct%20X:
다이렉트3D는 정해진 기본형(primitive)을 이용해서 그리는 함수를 4가지를 제공한다.
1. 인덱스 버퍼(vertex buffer)를 이용하지 않고 기본형을 그리는 함수
1) DrawPrimitive(): Drawprimitive 함수는 데이터 입력스트림의 현재 집합으로부터 지정된 형식의 '인덱스 되지 않은 기본형들을 렌더링' 한다. 이 경우 유일한 '데이터 스트림은 SetStreamSource함수에 의해 선언'된 것이다. (버텍스 버퍼를 이용한다.)
- Syntax-
HRESULT DrawPrimitive( UINT StartVertex, ); |
- Parameter-
○ primitiveType(Type: D3DPRIMITIVETYPE)
: 열거된 D3DPRIMITIVETYPE의 맴버로 '랜더링될 기본형의 종류'
○ StartVertex(Type: UINT)
: '첫번째로 로드될 버텍스의 번호'. 첫번째 번호가 설정되면 버텍스 버퍼의 끝까지 읽어들인다.
○ PrimitiveCount(Type: UINT): '렌더링할 기본형의 개수'. 출력가능한 최대 개수는 D3DCAPS9 구조체에 있는 MaxPrimitiveCount에서 정보를 얻을 수 있다.
- Return value-
HRESULT
: 성공하면 D3D_OK를 리턴한다. 실패하면 D3DERR_INVALIDCALL을 리턴한다.
2) DrawPrimitiveUp(): DrawprimitiveUp 함수는 사용자 메모리 포인터에 의해 지정된 타입의 기본형정보를 렌더링 한다. (버텍스 버퍼를 이용하지 않는다.)
- Syntax-
HRESULT DrawPrimitiveUP( ); |
- Parameter-
○ primitiveType(TYPE: D3DPRIMITIVETYPE)
: 열거된 D3DPRIMITIVETYPE의 맴버로 '랜더링될 기본형의 종류'
○ primitiveCount(Type: UINT): '렌더링할 기본형의 개수'. 출력가능한 최대 개수는 D3DCAPS9 구조체에 있는 MaxPrimitiveCount에서 정보를 얻을 수 있다.
○ pVertexStreamZeroData(Type: const void*): 버텍스 데이터의 유저 메모리 포인터
○ pVertexStreamZeroStride(Type: UINT): 각 각의 버텍스데이터의 크기
- Return value-
HRESULT
: 성공하면 D3D_OK를 리턴한다. 실패하면 D3DERR_INVALIDCALL을 리턴한다.
3) DrawIndexedPrimitive(): DrawIndexedPrimitive 함수는 인덱스 되어 있는 버텍스를 기본으로 버텍스들의 기본형들을 렌더링 한다. (인덱스 버퍼+버텍스 버퍼를 이용한다.)
- Syntax-
HRESULT DrawIndexedPrimitive( UINT MinIndex, UINT NumVertices, UINT StartIndex, UINT PrimitiveCount |
- Parameter-
○ primitiveType(TYPE: D3DPRIMITIVETYPE)
: 열거된 D3DPRIMITIVETYPE의 맴버로 '랜더링될 기본형의 종류'
○ BaseVertexIndex(TYPE: INT): 버텍스 버퍼의 시작에서 부터 첫번째 버텍스까지의 오프셋
○ MinIndex(TYPE: UINT)
: 호출하는 동안 사용될 최소의 버텍스 인덱스. 0이면 BaseVertexIndex가 기본이 된다.
○ NumVertices(TYPE: UINT): 함수 호출하는 동안에 사용될 버텍스들의 숫자. 첫 버택스는 BaseVertexIndex+MinIndex에 위치해 있다.
○ StartIndex(TYPE: UINT): 버텍스 버퍼에 접근할때 이용될 첫번째 인덱스의 숫자. 버텍스 버퍼에서 startIndext부터 Index가 시작한다.
○ PrimitiveCount(TYPE: UINT): '렌더링할 기본형의 개수'. 출력가능한 최대 개수는 D3DCAPS9 구조체에 있는 MaxPrimitiveCount에서 정보를 얻을 수 있다.
- Return value-
HRESULT
: 성공하면 D3D_OK를 리턴한다. 실패하면 D3DERR_INVALIDCALL을 리턴한다.
4) DrawIndexedPrimitiveUp(): DrawIndexedPrimitiveUp 함수는 유저에 의해 지정된 메모리 포인터를 이용해여 지정된 기본형들을 렌더링 한다. (인덱스 버퍼+버텍스 버퍼를 이용하지 않는다.)
- Syntax-
HRESULT DrawIndexedPrimitiveUP( |
- Parameter-
○ primitiveType(TYPE: D3DPRIMITIVETYPE)
: 열거된 D3DPRIMITIVETYPE의 맴버로 '랜더링될 기본형의 종류'
○ MinVertexIndex(TYPE: UINT): 최소 버텍스 인텍스 (0부터 시작하는 인덱스이다.)
○ NumVertices(TYPE: UINT): 함수 호출하는 동안에 사용될 버텍스들의 숫자. 첫번째 버텍스는 MinVertexIndex에서 설정한 인덱스에 있다.
○ PrimitiveCount(TYPE: UINT): '렌더링할 기본형의 개수'. 출력가능한 최대 개수는 D3DCAPS9 구조체에 있는 MaxPrimitiveCount에서 정보를 얻을 수 있다.
○ pIndexData(TYPE: const void*): 인덱스 데이터의 메모리 포인터.
○ IndexDataFormat(TYPE: D3DFORMAT ): D3DFORMAT에서 열거되어 있는 타입. 인덱스 데이터의 형태를 나타만다. 가능한 설정값은 D3DFMT_INDEX16, D3FMT_INDEX32 이다.
○ pVertexStreamZeroData(TYPE: const void*): 버텍스 데이터의 메모리 포인터. 이때 버텍스 데이터는 stream0에 위치해야 한다.
○ VertexStreamZeroStride(TYPE: UINT): 각각의 버텍스 데이터(자료형의) 크기
- Return value-
HRESULT
: 성공하면 D3D_OK를 리턴한다. 실패하면 D3DERR_INVALIDCALL을 리턴한다.