D3DHAL_DRAWPRIMITIVES2DATA 구조체(d3dhal.h)

D3DHAL_DRAWPRIMITIVES2DATA 구조체에는 D3dDrawPrimitives2 함수가 기본 형식을 렌더링하는 데 필요한 정보가 포함되어 있습니다.

구문

typedef struct _D3DHAL_DRAWPRIMITIVES2DATA {
  ULONG_PTR                 dwhContext;
  DWORD                     dwFlags;
  DWORD                     dwVertexType;
  LPDDRAWI_DDRAWSURFACE_LCL lpDDCommands;
  DWORD                     dwCommandOffset;
  DWORD                     dwCommandLength;
  union {
    LPDDRAWI_DDRAWSURFACE_LCL lpDDVertex;
    LPVOID                    lpVertices;
  };
  DWORD                     dwVertexOffset;
  DWORD                     dwVertexLength;
  DWORD                     dwReqVertexBufSize;
  DWORD                     dwReqCommandBufSize;
  LPDWORD                   lpdwRStates;
  union {
    DWORD   dwVertexSize;
    HRESULT ddrval;
  };
  DWORD                     dwErrorOffset;
} D3DHAL_DRAWPRIMITIVES2DATA;

멤버

dwhContext

Direct3D 디바이스의 컨텍스트 핸들을 지정합니다.

dwFlags

드라이버에 추가 지침을 제공하거나 드라이버의 정보를 제공하는 플래그를 지정합니다. 이 멤버는 다음 값 중 비트 OR일 수 있습니다.

의미
D3DHALDP2_EXECUTEBUFFER 명령 및 꼭짓점 버퍼는 시스템 메모리에 만들어졌습니다. 드라이버는 lpdwRStates가 가리키는 상태 배열을 업데이트해야 합니다. 이 플래그는 Direct3D에서만 설정됩니다.
D3DHALDP2_REQCOMMANDBUFSIZE 드라이버는 dwReqCommandBufSize에 지정된 크기 이상으로 현재 명령 버퍼를 늘릴 수 있어야 합니다. 명령 버퍼의 다중 버퍼링을 지원하지 않는 드라이버는 이 플래그를 무시할 수 있습니다. 이 플래그는 Direct3D에서만 설정됩니다.
D3DHALDP2_REQVERTEXBUFSIZE 드라이버는 dwReqCommandBufSize에 지정된 크기 이상의 꼭짓점 버퍼를 할당할 수 있어야 합니다. 꼭짓점 버퍼의 다중 버퍼링을 지원하지 않는 드라이버는 이 플래그를 무시할 수 있습니다. 이 플래그는 Direct3D에서만 설정됩니다.
D3DHALDP2_SWAPCOMMANDBUFFER 드라이버는 lpDDCommands가 가리키는 버퍼를 새 명령 버퍼로 교환하고 Direct3D가 새 명령 버퍼를 채우는 동안 원래 버퍼를 비동기적으로 처리하여 즉시 반환할 수 있습니다. 명령 버퍼의 다중 버퍼링을 지원하지 않는 드라이버는 이 플래그를 무시할 수 있습니다. 이 플래그는 Direct3D에서만 설정됩니다.
D3DHALDP2_SWAPVERTEXBUFFER 드라이버는 lpDDVertex 또는 lpVertices가 가리키는 버퍼를 새 꼭짓점 버퍼로 교환하고 Direct3D가 새 꼭짓점 버퍼를 채우는 동안 원래 버퍼를 비동기적으로 처리하는 즉시 반환할 수 있습니다. 꼭짓점 버퍼의 다중 버퍼링을 지원하지 않는 드라이버는 이 플래그를 무시할 수 있습니다. 이 플래그는 Direct3D에서만 설정됩니다.
D3DHALDP2_USERMEMVERTICES lpVertices 멤버는 유효하므로 드라이버는 lpVertices가 가리키는 사용자 할당 메모리에서 꼭짓점 데이터를 가져와야 합니다. 이 플래그는 Direct3D에서만 설정됩니다.
D3DHALDP2_VIDMEMCOMMANDBUF 드라이버에서 스왑 버퍼로 할당한 명령 버퍼가 시스템 메모리에 없습니다. 이 플래그는 명령 버퍼의 다중 버퍼링을 지원하는 드라이버에서 설정할 수 있습니다.
D3DHALDP2_VIDMEMVERTEXBUF 드라이버에서 스왑 버퍼로 할당한 꼭짓점 버퍼가 시스템 메모리에 없습니다. 이 플래그는 꼭짓점 버퍼의 다중 버퍼링을 지원하는 드라이버에서 설정할 수 있습니다.

dwVertexType

꼭짓점 버퍼에 있는 데이터의 FVF 를 식별합니다. 즉, dwVertexTypelpDDVertex 또는 lpVertices 가 가리키는 꼭짓점 버퍼에 있는 꼭짓점별 데이터 필드를 지정합니다. 이 멤버는 다음 표에 있는 값의 비트 OR일 수 있습니다. D3DFVF_TEXx 플래그 중 하나만 설정됩니다.

의미
D3DFVF_DIFFUSE 각 꼭짓점은 확산 색입니다.
D3DFVF_SPECULAR 각 꼭짓점에는 반사 색이 있습니다.
D3DFVF_TEX0 꼭짓점 데이터와 함께 텍스처 좌표가 제공되지 않습니다.
D3DFVF_TEX1 각 꼭짓점에는 하나의 텍스처 좌표 집합이 있습니다.
D3DFVF_TEX2 각 꼭짓점에는 두 개의 텍스처 좌표 집합이 있습니다.
D3DFVF_TEX3 각 꼭짓점에는 3개의 텍스처 좌표 집합이 있습니다.
D3DFVF_TEX4 각 꼭짓점에는 4개의 텍스처 좌표 집합이 있습니다.
D3DFVF_TEX5 각 꼭짓점에는 5개의 텍스처 좌표 집합이 있습니다.
D3DFVF_TEX6 각 꼭짓점에는 6개의 텍스처 좌표 집합이 있습니다.
D3DFVF_TEX7 각 꼭짓점에는 7개의 텍스처 좌표 집합이 있습니다.
D3DFVF_TEX8 각 꼭짓점에는 8개의 텍스처 좌표 집합이 있습니다.
D3DFVF_XYZRHW 각 꼭짓점에는 x, y, z 및 w 좌표가 있습니다. 이 플래그는 항상 설정되어 있습니다.

lpDDCommands

dwCommandOffset

dwCommandLength

lpDDCommandsdwCommandOffset에서 시작하도록 가리키는 표면의 유효한 명령 데이터의 바이트 수를 지정합니다.

lpDDVertex

D3DHALDP2_USERMEMVERTICES 플래그가 dwFlags에 설정되지 않은 경우 꼭짓점 데이터가 포함된 DirectDraw 표면을 식별하는 DD_SURFACE_LOCAL 구조를 가리킵니다. lpVertices를 사용하여 공용 구조체를 형성합니다.

lpVertices

D3DHALDP2_USERMEMVERTICES 플래그가 dwFlags에 설정된 경우 꼭짓점 데이터가 포함된 사용자 모드 메모리 블록을 가리킵니다.

dwVertexOffset

꼭짓점 데이터가 시작되는 lpDDVertex 또는 lpVertices 가 가리키는 표면의 바이트 수를 지정합니다.

dwVertexLength

lpDDVertex 또는 lpVertices가 가리키는 표면에 유효한 데이터가 있는 꼭짓점 수를 지정합니다. 이 유효한 데이터는 dwVertexOffset에서 시작됩니다.

dwReqVertexBufSize

드라이버가 스왑 꼭짓점 버퍼에 할당해야 하는 최소 바이트 수를 지정합니다. 이 멤버는 D3DHALDP2_REQVERTEXBUFSIZE 플래그가 설정된 경우에만 유효합니다. 꼭짓점 버퍼의 다중 버퍼링을 지원하지 않는 드라이버는 이 멤버를 무시해야 합니다.

dwReqCommandBufSize

드라이버가 스왑 명령 버퍼를 늘려야 하는 최소 바이트 수를 지정합니다. 이 멤버는 D3DHALDP2_REQCOMMANDBUFSIZE 플래그가 설정된 경우에만 유효합니다. 명령 버퍼의 다중 버퍼링을 지원하지 않는 드라이버는 이 멤버를 무시해야 합니다.

lpdwRStates

명령 버퍼에서 렌더링 상태 명령을 구문 분석할 때 드라이버가 업데이트해야 하는 렌더링 상태 배열을 가리킵니다. 드라이버는 D3DHALDP2_EXECUTEBUFFER 플래그가 dwFlags에 설정된 경우에만 이 배열을 업데이트해야 합니다. 드라이버는 D3DRENDERSTATETYPE 열거형 형식을 사용하여 렌더링 상태 배열의 적절한 요소를 업데이트해야 합니다.

dwVertexSize

각 꼭짓점의 크기를 바이트 단위로 지정합니다. 이 멤버는 ddrval을 사용하여 공용 구조체를 형성합니다.

ddrval

드라이버가 D3dDrawPrimitives2의 반환 값을 쓰는 위치를 지정합니다. D3D_OK 성공을 나타냅니다. 그렇지 않으면 드라이버가 적절한 D3DERR_Xxx 오류 코드를 반환해야 합니다. 자세한 내용은 Direct3D 드라이버 콜백에 대한 반환 코드를 참조하세요.

의미
D3D_OK 작업이 성공적으로 완료되었습니다.
D3DERR_COMMAND_UNPARSED 드라이버에서 실행 버퍼를 구문 분석하려면 Direct3D 런타임이 필요합니다.

dwErrorOffset

각 D3DHAL_DP2RESPONSEQUERY 뒤에 쿼리와 관련된 다음 데이터가 잇습니다.

  • D3DQUERYTYPE_EVENT 대한 BOOL
  • DWORD for D3DQUERYTYPE_OCCLUSION
  • D3DQUERYTYPE_VCACHE 대한 D3DDEVINFO_VCACHE 구조체

설명

dwVertexOffset 멤버는 값을 바이트 단위로 지정합니다. dwVertexLength 멤버는 꼭짓점의 값을 지정합니다.

lpDDVertex 또는 lpVertices의 표면에 있는 유효한 데이터를 바이트 단위로 계산하려면 dwVertexLength의 값을 dwVertexSize의 값과 곱합니다.

요구 사항

요구 사항
헤더 d3dhal.h(D3dhal.h 포함)

추가 정보

D3DHAL_DP2COMMAND

D3DRENDERSTATETYPE

D3dDrawPrimitives2

DD_SURFACE_GLOBAL

DD_SURFACE_LOCAL