PDD_CREATESURFACE 콜백 함수(ddrawint.h)

CreateD3DBuffer 콜백 함수는 지정된 설명의 드라이버 수준 명령 또는 꼭짓점 버퍼를 만드는 데 사용됩니다.

구문

PDD_CREATESURFACE PddCreatesurface;

DWORD PddCreatesurface(
  PDD_CREATESURFACEDATA unnamedParam1
)
{...}

매개 변수

unnamedParam1

버퍼를 만드는 데 필요한 정보가 포함된 DD_CREATESURFACEDATA 구조를 가리킵니다.

반환 값

CreateD3DBuffer는 다음 콜백 코드 중 하나를 반환합니다.

설명

이 콜백은 드라이버가 드라이버 수준 명령 및 꼭짓점 버퍼를 관리하는 경우에만 사용됩니다.

기본적으로 기본 화면이 Windows 2000 이상 버전에서 만들어지면 드라이버에 알림이 표시되지 않습니다. 그러나 드라이버가 DdGetDriverInfo 호출에서 GUID_NTPrivateDriverCaps GUID를 지원하고 DDHAL_PRIVATECAP_NOTIFYPRIMARYCREATION 플래그가 DD_NTPRIVATEDRIVERCAPS 구조체dwPrivateCaps 멤버에 설정된 경우 드라이버에 알림이 표시됩니다.

피치는 DD_SURFACE_GLOBAL 구조체와 DDSURFACEDESC 구조체의 lPitch 멤버에서 반환되어야 합니다. 선형 메모리의 경우 드라이버는 dwBlockSizeX 를 메모리 영역의 크기(바이트)로 설정하고 dwBlockSizeY 를 1로 설정해야 합니다. 둘 다 DD_SURFACE_GLOBAL 구조체의 멤버입니다.

이 호출에는 DdCreateSurface와 동일한 프로토타입이 있습니다. CreateD3DBuffer 콜백은 문제의 표면에 DD_SURFACE_LOCAL 구조체의 ddsCaps 멤버에 설정된 DDSCAPS_EXECUTEBUFFER 플래그가 있는 경우 대신 사용됩니다. 버퍼 생성 플래그는 DDSCAPS_WRITEONLY, DDSCAPS2_VERTEXBUFFER 및 DDSCAPS2_COMMANDBUFFER.

드라이버는 다음 플래그에 대해 DD_SURFACE_LOCAL 구조체의 ddsCaps 멤버를 확인하여 요청되는 버퍼 유형을 결정합니다.

플래그 의미
DDSCAPS2_COMMANDBUFFER 드라이버는 명령 버퍼를 할당해야 합니다.
DDSCAPS2_VERTEXBUFFER 드라이버는 명시적 꼭짓점 버퍼를 할당해야 합니다.
 
참고 두 플래그가 모두 설정되지 않은 경우 드라이버는 암시적 꼭짓점 버퍼를 할당해야 합니다. 암시적 꼭짓점 버퍼는 읽기/쓰기가 가능하므로 비디오 메모리에 배치해서는 안 됩니다. DDSCAPS_WRITEONLY 플래그가 설정된 명시적 꼭짓점 버퍼만 비디오 메모리에 안전하게 배치할 수 있습니다.
 
드라이버는 버퍼 메모리 자체를 할당하거나 Microsoft DirectDraw에서 메모리 관리를 수행하라는 요청을 할 수 있습니다. 드라이버가 할당을 수행하는 경우 DD_SURFACE_GLOBAL 구조체fpVidMem 멤버에 있는 메모리에 유효한 포인터를 작성해야 합니다.

또는 드라이버는 fpVidMem에서 다음 값 중 하나를 반환하여 DirectDraw가 버퍼를 할당할 것을 요청할 수 있습니다.

의미
DDHAL_PLEASEALLOC_BLOCKSIZE DirectDraw는 오프스크린 메모리에서 버퍼 메모리를 할당해야 합니다.
DDHAL_PLEASEALLOC_USERMEM DirectDraw는 사용자 메모리에서 버퍼 메모리를 할당해야 합니다. 또한 드라이버는 dwUserMemSize의 메모리 영역 크기(바이트)를 반환해야 합니다.

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 ddrawint.h(Winddi.h 포함)

추가 정보

DDSURFACEDESC

DD_CREATESURFACEDATA

DD_NTPRIVATEDRIVERCAPS

DD_SURFACE_GLOBAL

DD_SURFACE_LOCAL

DdCreateSurface

DdGetDriverInfo