반응형

http://tadis.tistory.com/category/Direct%20X:



이렉트3D는 정해진 기본형(primitive)을 이용해서 그리는 함수를 4가지를 제공한다.

 

1. 인덱스 버퍼(vertex buffer)를 이용하지 않고 기본형을 그리는 함수

  1) DrawPrimitive(): Drawprimitive 함수는 데이터 입력스트림의 현재 집합으로부터 지정된 형식의 '인덱스 되지 않은 기본형들을 렌더링' 한다. 이 경우 유일한 '데이터 스트림은 SetStreamSource함수에 의해 선언'된 것이다. (버텍스 버퍼를 이용한다.)

 

  - Syntax-

    HRESULT DrawPrimitive(
   D3DPRIMITIVETYPE primitiveType,

   UINT StartVertex, 
   UINT PrimitiveCount

   );

 

  - 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(
   D3DPRIMITIVETYPE PrimitiveType,
  UINT PrimitiveCount,
  const void *pVertexStreamZeroData,
  UINT VertexStreamZeroStride

  );

 

   - 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(
     D3DPRIMITIVETYPE Type,
     INT BaseVertexIndex,

     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(
    D3DPRIMITIVETYPE PrimitiveType,
    UINT MinVertexIndex,
    UINT NumVertices,
    UINT PrimitiveCount,
    const void *pIndexData,
    D3DFORMAT IndexDataFormat,
    const void *pVertexStreamZeroData,
    UINT VertexStreamZeroStride
  );

 

  - 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을 리턴한다.

 

반응형

'그래픽스(Graphics) > DirectX9~12' 카테고리의 다른 글

기하정보 저장 버퍼  (0) 2013.02.10
버텍스버퍼 활용  (0) 2013.02.10
TGA파일에서 알파채널 만들기  (1) 2013.01.31
포샵에서 DDS파일 만들기(2)  (0) 2013.01.31
포샵에서 DDS파일 만들기(1)  (0) 2013.01.31

+ Recent posts