PDD_CREATESURFACE fungsi panggilan balik (ddrawint.h)

Fungsi panggilan balik CreateD3DBuffer digunakan untuk membuat perintah tingkat driver atau buffer vertex dari deskripsi yang ditentukan.

Sintaks

PDD_CREATESURFACE PddCreatesurface;

DWORD PddCreatesurface(
  PDD_CREATESURFACEDATA unnamedParam1
)
{...}

Parameter

unnamedParam1

Menunjuk ke struktur DD_CREATESURFACEDATA yang berisi informasi yang diperlukan untuk membuat buffer.

Nilai kembali

CreateD3DBuffer mengembalikan salah satu kode panggilan balik berikut:

Keterangan

Panggilan balik ini hanya digunakan jika driver mengelola perintah tingkat driver dan buffer vertex.

Secara default, driver tidak diberi tahu ketika permukaan utama dibuat pada Windows 2000 dan versi yang lebih baru. Namun, jika driver mendukung GUID GUID_NTPrivateDriverCaps dalam panggilan DdGetDriverInfo dan bendera DDHAL_PRIVATECAP_NOTIFYPRIMARYCREATION diatur dalam anggota dwPrivateCaps dari struktur DD_NTPRIVATEDRIVERCAPS , maka driver akan diberi tahu.

Pitch harus dikembalikan dalam anggota lPitch dari struktur DD_SURFACE_GLOBAL dan DDSURFACEDESC . Untuk memori linier, driver harus mengatur dwBlockSizeX ke ukuran, dalam byte, dari wilayah memori dan mengatur dwBlockSizeY ke 1. Keduanya adalah anggota struktur DD_SURFACE_GLOBAL.

Panggilan ini memiliki prototipe yang sama dengan DdCreateSurface. Panggilan balik CreateD3DBuffer digunakan sebagai gantinya ketika permukaan yang dimaksud memiliki bendera DDSCAPS_EXECUTEBUFFER yang diatur dalam anggota ddsCaps dari struktur DD_SURFACE_LOCAL . Bendera pembuatan buffer DDSCAPS_WRITEONLY, DDSCAPS2_VERTEXBUFFER, dan DDSCAPS2_COMMANDBUFFER.

Driver menentukan jenis buffer yang diminta dengan memeriksa anggota ddsCaps dari struktur DD_SURFACE_LOCAL untuk bendera berikut:

Bendera Makna
DDSCAPS2_COMMANDBUFFER Driver harus mengalokasikan buffer perintah.
DDSCAPS2_VERTEXBUFFER Driver harus mengalokasikan buffer vertex eksplisit.
 
Catatan Jika tidak ada bendera yang diatur, driver harus mengalokasikan buffer vertex implisit. Buffer vertex implisit tidak boleh ditempatkan dalam memori video karena diharapkan dibaca/ditulis. Hanya buffer vertex eksplisit dengan set bendera DDSCAPS_WRITEONLY yang dapat ditempatkan dengan aman dalam memori video.
 
Driver dapat mengalokasikan memori buffer itu sendiri atau dapat meminta agar Microsoft DirectDraw melakukan manajemen memori. Jika driver melakukan alokasi, driver harus menulis pointer yang valid ke memori di anggota fpVidMem dari struktur DD_SURFACE_GLOBAL .

Atau, driver dapat meminta DirectDraw mengalokasikan buffer dengan mengembalikan salah satu nilai berikut dalam fpVidMem:

Nilai Makna
DDHAL_PLEASEALLOC_BLOCKSIZE DirectDraw harus mengalokasikan memori buffer dari memori di luar layar.
DDHAL_PLEASEALLOC_USERMEM DirectDraw harus mengalokasikan memori buffer dari memori pengguna. Driver juga harus mengembalikan ukuran, dalam byte, dari wilayah memori di dwUserMemSize.

Persyaratan

Persyaratan Nilai
Target Platform Desktop
Header ddrawint.h (termasuk Winddi.h)

Lihat juga

DDSURFACEDESC

DD_CREATESURFACEDATA

DD_NTPRIVATEDRIVERCAPS

DD_SURFACE_GLOBAL

DD_SURFACE_LOCAL

DdCreateSurface

DdGetDriverInfo