Программирование игр для Windows. Советы профессионала


«Прозрачные» пиксели - часть 4


// Функция устанавливает режим 13h

// Это MCGA-совместимыЙ режим 320х200х256 цветов

void InitVideo()

{

union REGS r;

r.h.ah=0x0f;       // функция Ofh - установка видеорежима

int86(0xl0,&r,&r); // вызов видео BIOS

PrevMode=r.h.al;   // сохраняем старое значение режима

r.x.ax=0xl3;       // устанавливаем режим 13h

int86(0х10,&r,sr); // вызов видео BIOS

VideoRam=MK_FP(0xa000,0); // создаем указатель на видеопамять

}

//Эта функция восстанавливает исходный видеорежим

void RestoreVideo()

{

union REGS r;

r.x,ax=PrevMode;   //исходный видеорежим

int86(0х10,&r,&r); // вызов видео BIOS

}

// Функция загрузки битовых карт слоев

int InitBitmaps()

{

int r;

// начальное положение линии деления

background=foreground=1;

// читаем битовую карту фона

r=ReadPcxFile("backgrnd.pcx",&pcx);

// проверка на ошибки чтения if(r != РСХ_ОК)

return FALSE;

// запоминаем указатель на битовую карту

BackGroundBmp=pcx.bitmap;

// устанавливаем палитру

SetAllRgbPalette(pcx.pal) ;

// читаем битовую карту переднего слоя

r=ReadPcxFile("foregrnd.pcx",&pcx);

// проверка на ошибки чтения

if (r != РСХ_ОК) return FALSE;

//запоминаем указатель на битовую карту

ForeGroundBmp=pcx.bitmap;

// создаем буфер в памяти

MemBuf=malloc(MEMBLK);

// проверка на ошибки распределения памяти

if(MemBuf == NULL) return FALSE;

memset(MemBuf,0,MEMBLK); // очистка буфера

return TRUE;

// все в порядке!

}

// функция освобождает выделенную память

void FreeMem()

(

free(MemBuf);

free(BackGroundBmp);

free(ForeGroundBmp);

}

// Функция рисует слои параллакса.

// Порядок отрисовки определяется координатой слоя по оси Z.

void DrawLayers()

{

OpaqueBlt(BackGroundBmp,0,100,background);

TransparentBlt(ForeGroundBmp,50,100,foreground);

}

// Эта функция осуществляет анимацию. Учтите, что это наиболее

// критичная по времени часть программы. Для оптимизации отрисовки

// как сама функция, так и те функции, которые она вызывает,

// следует переписать на ассемблере.


Начало  Назад  Вперед



Книжный магазин