DD_SURFACE_GLOBAL structure (ddrawint.h)
La structure DD_SURFACE_GLOBAL contient des données globales relatives à la surface qui peuvent être partagées entre plusieurs surfaces.
Syntaxe
typedef struct _DD_SURFACE_GLOBAL {
union {
DWORD dwBlockSizeY;
LONG lSlicePitch;
};
union {
LPVIDEOMEMORY lpVidMemHeap;
DWORD dwBlockSizeX;
DWORD dwUserMemSize;
};
FLATPTR fpVidMem;
union {
LONG lPitch;
DWORD dwLinearSize;
};
LONG yHint;
LONG xHint;
DWORD wHeight;
DWORD wWidth;
ULONG_PTR dwReserved1;
DDPIXELFORMAT ddpfSurface;
FLATPTR fpHeapOffset;
HANDLE hCreatorProcess;
} *PDD_SURFACE_GLOBAL, DD_SURFACE_GLOBAL;
Membres
dwBlockSizeY
Spécifie l’emplacement dans lequel le pilote retourne la hauteur, dans les lignes de balayage, du bloc de mémoire hors écran que Microsoft DirectDraw doit allouer. Le pilote doit définir cette valeur lorsqu’il retourne DDHAL_PLEASEALLOC_BLOCKSIZE dans le membre fpVidMem .
lSlicePitch
Pas de coupe pour les textures de volume.
lpVidMemHeap
Pointe vers une structure VIDEOMEMORY à partir de laquelle la mémoire d’affichage du tas a été allouée.
dwBlockSizeX
Spécifie l’emplacement dans lequel le pilote retourne la taille en octets de la largeur du bloc de mémoire hors écran que DirectDraw doit allouer. Le pilote doit définir cette valeur lorsqu’il retourne DDHAL_PLEASEALLOC_BLOCKSIZE dans le membre fpVidMem .
dwUserMemSize
Spécifie l’emplacement dans lequel le pilote retourne la taille en octets du bloc de mémoire que DirectDraw doit allouer en mémoire système en mode utilisateur. Le pilote doit définir cette valeur lorsqu’il retourne DDHAL_PLEASEALLOC_USERMEM dans le membre fpVidMem .
fpVidMem
Si le pilote alloue le bloc de mémoire, il doit retourner le décalage dans la mémoire d’affichage dans ce membre. Si le pilote demande à DirectDraw d’effectuer l’allocation de mémoire, il peut retourner l’une des valeurs suivantes dans ce membre à partir de sa routine DdCreateSurface :
Valeur | Signification |
---|---|
DDHAL_PLEASEALLOC_BLOCKSIZE | DirectDraw doit allouer un bloc de mémoire de taille dwBlockSizeX et dwBlockSizeY dans la mémoire hors écran. |
DDHAL_PLEASEALLOC_USERMEM | DirectDraw doit allouer un bloc de mémoire de taille dwUserMemSize en mémoire en mode utilisateur. |
lPitch
Spécifie le tangage de la surface ; c’est-à-dire la distance en octets jusqu’au début de la ligne suivante. C’est également ce que l’on appelle la foulée de la surface.
dwLinearSize
Spécifie la taille linéaire en octets d’une surface nonrectangulaire.
yHint
Spécifie la coordonnée y de la surface. Ce membre est une coordonnée cartésienne 2D spécifiée dans l’espace de l’appareil.
xHint
Spécifie la coordonnée x de la surface. Ce membre est une coordonnée cartésienne 2D spécifiée dans l’espace de l’appareil.
wHeight
Spécifie la hauteur en pixels de la surface.
wWidth
Spécifie la largeur en pixels de la surface.
dwReserved1
Réservé à l’utilisation par le pilote d’affichage.
ddpfSurface
Pointe vers la structure DDPIXELFORMAT qui décrit le format de pixels de la surface.
fpHeapOffset
Pointe vers le décalage brut dans le tas source.
hCreatorProcess
Réservé à l’utilisation système et doit être ignoré par le pilote.
Notes
Une mémoire tampon de vertex, créée par CreateD3DBuffer, contient une liste de sommets utilisés par le rappel D3dDrawPrimitives2 pour le rendu des primitives. Microsoft Windows représente les mémoires tampons de vertex en tant que surfaces DirectDraw, établissant ainsi une connexion entre les mémoires tampons de vertex et la structure DD_SURFACE_GLOBAL.
Lorsqu’un pilote DirectX fonctionne avec une mémoire tampon de vertex, il est important qu’il soit en mesure de déterminer correctement la taille de cette mémoire tampon. DirectDraw transmet la taille de mémoire tampon linéaire au pilote dans le membre lPitch de cette structure. Sur Windows 2000 et versions ultérieures, mais pas sur Windows 98/Me, le membre wWidth de cette structure est défini sur la même valeur. Notez que les deux membres de la structure doivent être considérés comme en lecture seule. La valeur que DirectDraw place dans ces membres représente la taille minimale de la mémoire tampon de vertex. Si vous avez besoin d’une mémoire tampon plus grande (par exemple, pour l’optimisation), un enregistreur de pilotes est libre de créer une mémoire tampon supérieure à cette taille. Toutefois, en aucun cas, le pilote ne doit signaler la plus grande taille de mémoire tampon à DirectDraw.
Spécifications
En-tête | ddrawint.h (incluez Winddi.h) |