Стэн Трухильо - Графика для Windows средствами DirectDraw

Тут можно читать онлайн Стэн Трухильо - Графика для Windows средствами DirectDraw - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Графика для Windows средствами DirectDraw
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4.88/5. Голосов: 81
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 100
    • 1
    • 2
    • 3
    • 4
    • 5

Стэн Трухильо - Графика для Windows средствами DirectDraw краткое содержание

Графика для Windows средствами DirectDraw - описание и краткое содержание, автор Стэн Трухильо, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Графика для Windows средствами DirectDraw - читать онлайн бесплатно полную версию (весь текст целиком)

Графика для Windows средствами DirectDraw - читать книгу онлайн бесплатно, автор Стэн Трухильо
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

LPDIRECTDRAWSURFACE fpssurf;

RECT fpsrect;

BOOL displayfps;

DWORD framecount;

HFONT smallfont, largefont;

};

Класс SwitchWinсодержит всего одну открытую ( public) функцию — конструктор класса (вскоре мы его рассмотрим). В классе также присутствует функция OnKeyDown()— обработчик сообщений, созданный ClassWizard (закомментированные директивы AFX, окружающие функцию OnKeyDown(), используются ClassWizard для поиска функций-обработчиков). Мы воспользуемся этой функцией для обработки нажимаемых клавиш — стрелок, Enterи незаменимой клавиши Escape.

Следующие пять функций являются переопределенными версиями функций DirectDrawWin:

• SelectDriver()

• SelectInitialDisplayMode()

• CreateCustomSurfaces()

• DrawScene()

• RestoreSurfaces()

С помощью функции SelectDriver()приложение выбирает используемое видеоустройство (если их несколько). Она полностью совпадает со стандартной версией, создаваемой AppWizard, и выводит меню при наличии нескольких драйверов. Функция SelectInitialDisplayMode()задает исходный видеорежим, устанавливаемый приложением. Здесь снова используется стандартная версия AppWizard, которая ищет видеорежим с параметрами 640x480x16.

Функция CreateCustomSurfaces()вызывается DirectDrawWinпри активизации нового видеорежима; мы воспользуемся этой функцией для создания и подготовки поверхностей программы Switch. Функция DrawScene()отвечает за обновление экрана; она будет использоваться для отображения анимации, меню видеорежимов и значения FPS. Наконец, функция RestoreSurfaces()вызывается классом DirectDrawWinпри необходимости восстановить потерянные поверхности. Эта функция восстанавливает не только сами поверхности, но и (для особо важных поверхностей) их содержимое.

Затем класс SwitchWinобъявляет четыре функции, специфические для программы Switch:

• CreateMenuSurface()

• UpdateMenuSurface()

• CreateFPSSurface()

• UpdateFPSSurface()

Это вспомогательные функции для работы с поверхностями, используемыми для вывода меню видеорежимов и значения FPS. Они подробно рассматриваются ниже в этой главе.

Закрытые переменные, объявленные в конце, предназначены для отображения анимации, меню видеорежимов и FPS, а также для работы со шрифтами средствами Win32.

Переменная bmpsurf — указатель на интерфейс DirectDrawSurface, через который мы будем обращаться к данным перемещаемого растра, а переменные x, y, xincи yincопределяют его положение.

Указатель menusurfиспользуется для доступа к поверхности меню видеорежимов, а в целой переменной selectmodeхранится индекс текущего активного видеорежима.

Следующие переменные списка связаны с выводом значения FPS. Переменная fpssurf — указатель на интерфейс DirectDrawSurface, через который производится доступ к поверхности FPS. Структура типа RECT (fpsrect)содержит размеры поверхности fpssurf. Логическая переменная displayfpsуправляет отображением значения FPS, а в переменной framecountхранится количество кадров, выведенных в очередном временном интервале измерения FPS.

Две последние переменные, smallfontи largefont, имеют тип HFONT. Это логические номера шрифтов Win32, используемые для вывода текста на поверхностях menusurfи fpssurf.

Инициализация приложения

Наше знакомство с программой Switch начинается с конструктора switchWin, внутри которого происходит первоначальная инициализация переменных класса. Не следует путать эту инициализацию с той, что выполняется функцией CreateCustomSurfaces(), потому что в отличие конструктора CreateCustomSurfaces()вызывается при каждой смене видеорежима. Конструктор выглядит так

SwitchWin::SwitchWin(){

bmpsurf=0;

x=y=0;

xinc=8;

yinc=1;

menusurf=0;

fpssurf=0;

vlargefont = CreateFont(28, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, VARIABLE_PITCH, "Arial");

smallfont = CreateFont(14, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, VARIABLE_PITCH, "Arial");

}

В основном конструктор просто обнуляет переменные. Два логических номера шрифтов инициализируются функцией Win32 CreateFont(). В программе используются два разных размера одного и того же шрифта: крупным шрифтом выводится заголовок на поверхности меню видеорежимов, а мелким — описания видеорежимов и текст со значением FPS.

После того как объект SwitchWinбудет создан, DirectDrawWinвызывает функции SelectDriver()и SelectInitialDisplayMode(). Поскольку в программе Switch обе функции ведут себя стандартным образом (как описано в главе 3), мы не будем их рассматривать.

Затем класс DirectDrawWinвызывает функцию SwitchWin::CreateCustomSurfaces(), в которой подготавливает три поверхности, используемые программой Switch:

BOOL SwitchWin::CreateCustomSurfaces() {

int displaydepth=GetCurDisplayDepth();

CString filename;

if (displaydepth==8) filename="tri08.bmp";

else filename="tri24.bmp";

bmpsurf=CreateSurface(filename, TRUE);

if (bmpsurf==0) {

TRACE("surface creation failed\n");

return FALSE;

}

selectmode=GetCurDisplayMode();

CreateMenuSurface();

UpdateMenuSurface();

CreateFPSSurface();

return TRUE;

}

Содержимое одной из этих трех поверхностей определяется BMP-файлом. Функция CreateCustomSurfaces()по текущей глубине пикселей определяет, какой из двух BMP-файлов нужно использовать. Затем указатель на поверхность ( bmpsurf) инициализируется функцией DirectDrawWin::CreateSurface(). В случае 8-битного видеорежима содержимое палитры DirectDraw определяется палитрой из BMP-файла.

Затем происходит инициализация самой поверхности и переменных, связанных с видеорежимом. Переменной selectmodeприсваивается значение, зависящее от текущего видеорежима. Это значение используется для выделения активного видеорежима в меню. Указатель на поверхность меню видеорежимов ( menusurf) инициализируется вызовами функций CreateMenuSurface()и UpdateMenuSurface().

Наконец, переменные поверхности FPS инициализируются функцией Create FPSSurface(). Мы рассмотрим ее позднее, после функций CreateMenuSurface()и UpdateMenuSurface().

Функция CreateMenuSurface()выглядит так:

BOOL SwitchWin::CreateMenuSurface() {

if (menusurf) menusurf->Release(), menusurf=0;

menusurf=CreateSurface(menuwidth, menuheight);

if (menusurf==0) Fatal("SwitchWin::CreateMenuSurface() failed\n");

DDCOLORKEY ddck;

ddck.dwColorSpaceLowValue = 0;

ddck.dwColorSpaceHighValue = 0;

menusurf->SetColorKey(DDCKEY_SRCBLT, &ddck);

return TRUE;

}

Прежде всего CreateMenuSurface()освобождает любые поверхности, созданные ранее. Новая поверхность создается функцией CreateSurface(). Доступ к ней осуществляется через переменную menusurf. Затем мы назначаем новой поверхности цветовой ключ с помощью структуры DDCOLORKEYи функции SetColorKey()интерфейса DirectDrawSurface.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Стэн Трухильо читать все книги автора по порядку

Стэн Трухильо - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Графика для Windows средствами DirectDraw отзывы


Отзывы читателей о книге Графика для Windows средствами DirectDraw, автор: Стэн Трухильо. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x