Шаг 12 - Первый шаг к созданию поверхностей - структура DDSURFACEDESC

Данная структура используется для работы с поверхностями и обмена информации в DirectDraw. Часть полей заполняется перед вызовом функций, в части полей возвращается информация для Вас. Давайте объявим эту структуру в нашем классе и рассмотрим ее поля. При использовании структуры для создания поверхности ее нужно инициализировать. В VC и VB используются разные структуры то есть разновидности одной структуры.

Visual Basic
Visual C++

Visual Basic

Описание структуры

Type DDSURFACEDESC2
    ddckCKDestBlt As DDCOLORKEY		'Цветовой ключ приемника при копировании.
    ddckCKDestOverlay As DDCOLORKEY		'Цветовой ключ приемника при наложении.
    ddckCKSrcBlt As DDCOLORKEY		'Цветовой ключ источника при копировании.
    ddckCKSrcOverlay As DDCOLORKEY		'Цветовой ключ источника при наложении.
    ddpfPixelFormat As DDPIXELFORMAT		'Описание формата пикселя поверхности.
    ddsCaps As DDSCAPS2			'Возможности поверхности.
    lAlphaBitDepth As Long			'Глубина альфа буфера.
    lBackBufferCount As Long		'Количество запрашиваемых вторичных буферов.
    lFlags As CONST_DDSURFACEDESCFLAGS	'Флаги информации в полях.
    lHeight As Long			'Высота поверхности.
    lLinearSize As Long			'Размер буфера. В настоящее время возвращается только для сжатых 
					'текстур поверхностей.
    lMipMapCount As Long			'Число уровней mipmap.
    lPitch As Long				'Расстояние до начала следующей строки.
    lRefreshRate As Long			'Частота регенерации
    lTextureStage As Long			'Текстуры аппаратных средств.
    lWidth As Long				'Ширина поверхности.
    lZBufferBitDepth As Long		'Глубина z-буфера.
End Type

Добавим описание переменной структуры в проект и произведем инициализацию. При использовании в VB инициализировать созданную структуру не нужно. Достаточно просто объявить.

Private strsurf As DDSURFACEDESC2
Private objDirectX As DirectX7
Private objDirectDraw As DirectDraw7

Public Function SetMode640_480_8() As Boolean
.......................

Visual C++

Описание структуры

typedef struct _DDSURFACEDESC 
{
	DWORD dwSize;			//Размер структуры.
	DWORD dwFlags;			//Флаги информации в полях.
	DWORD dwHeight;			//Высота поверхности.
	DWORD dwWidth;			//Ширина поверхности.
	union
	{
		LONG      lPitch;		//Расстояние до начала следующей строки.
		DWORD     dwLinearSize;	//Размер буфера. В настоящее время возвращается только 
					//для сжатых  текстур поверхностей.
	};
	DWORD dwBackBufferCount;		//Количество запрашиваемых вторичных буферов.
	union
	{
		DWORD dwMipMapCount;	//Число уровней mipmap.
		DWORD dwZBufferBitDepth;	//Глубина z-буфера.
		DWORD dwRefreshRate;	//Частота регенерации
    };
	DWORD dwAlphaBitDepth;		//Глубина альфа буфера.
	DWORD dwReserved;
	LPVOID lpSurface;			//Адрес связанной памяти
	DDCOLORKEY ddckCKDestBlt;		//Цветовой ключ приемника при копировании.
	DDCOLORKEY ddckCKSrcOverlay;	//Цветовой ключ источника при наложении.
	DDCOLORKEY ddckCKSrcBlt;		//Цветовой ключ источника при копировании.
	DDPIXELFORMAT ddpfPixelFormat;	//Описание формата пикселя поверхности.
	DDSCAPS ddsCaps;			//Возможности поверхности.
} DDSURFACEDESC, FAR* LPDDSURFACEDESC; 

Добавим описание переменной структуры в проект и произведем инициализацию. В VC++ необходимо заполнить структуру нулями и указать ее размер.

class CDirectDraw  
{
public:
	BOOL SetMode640_480_8();
	............
	DDSURFACEDESC strsurf;
};


CDirectDraw::CDirectDraw()
{
	lpDD=NULL;
	memset(&strsurf,0,sizeof(DDSURFACEDESC));
	strsurf.dwSize = sizeof(DDSURFACEDESC);
}

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 23.04.2002