Организация сайтостроительства - 3D графика
Cture) — Компонент, отвечающий за взаимодействие Direct3D с графическими адаптерами и дисплеями. Выполняет управление видеопамятью и ресурсами GPU, обработку вывода изображения на экран (swap chain), управление несколькими мониторами и конфигурациями дисплеев.
-
Microsoft DirectX 2
Microsoft® DirectX™ 2 Комплект Разработки Программного обеспечения (SDK) обеспечивает набор интерфейсов программирования прикладной программы (API) который дает Вам, разработчику, ресурсы необходимые для разработки быстродействующих, в реальном масштабе, времени программ, типа игр и мультимедиа приложений следующего поколения..
Microsoft разработал DirectX 2 SDK по ряду причин. Основная причина состоит в том, чтобы сделать Windows платформу более эффективной, чем MS DOS или игровые платформы. Другая причина состоит в том, чтобы поддержать игровые разработки для Microsoft Windows, и помочь Вам, обеспечивая работу в стандартизированной и хорошо документированной платформе.
Причины для разработки DirectX программ
DirectX 2 Компоненты
DirectDraw
DirectSound
DirectPlay
Direct3D
DirectInput
AutoPlay
Типовые прикладные программы
Модель компонентных объектов СОM
IUnknown
DirectX 2 SDK COM Интерфейсы
C ++ и интерфейс COM
Вызов COM объектов из C
NULL);
Названия методов интерфейса и синтаксис
Использование макроопределений
NULL);
Точность операций с плавающей запятой
DDSD_REFRESHRATE
DirectSetup
Соглашения
Краткий обзор
Относительно DirectDraw
Введение в DirectDraw
DirectDraw HAL
DirectDraw программная эмуляция
Типы объектов DirectDraw
Интерфейс IDirectDraw2
DDSCL_NORMAL);
Примечание
Многочисленные объекты DirectDraw в процессе
Модели использования основной поверхности
Изменение режимов и исключительного доступа
DDSCAPS_SYSTEMMEMORY;
Доступ к буферу изображения
Потеря поверхностей
Поддержка форматов поверхностей для HEL
Преобразование цвета и форматов
Сolor Keying
Определение Color Key
Палитровый режим с 8 битами
Истинный цветной режим с 24 битами
FourCC YUV режим
Оверлейный z-порядок
Палитры и форматы пикселя
Блиттинг в и из поверхностей системной памяти
Установка палитр на неосновныхПоверхностях
Совместное использование палитр
Новые типы палитры
Драйвер независимые ограничители
Отсекаемые списки
Карты Текстуры
Mipmaps
DDSCAPS_MIPMAP | DDSCAPS_COMPLEX;
Z-буферы
Интерфейс драйвера Direct3D
Интерфейс устройства Direct3D
Интерфейс текстуры Direct3D
DirectDraw HEL и Direct3D
Функции
DirectDrawCreate
DDERR_OUTOFMEMORY
DirectDrawCreateClipper
DirectDrawEnumerate
Callback функции
Callback
EnumCallback
EnumModesCallback
HRESULT WINAPI lpEnumSurfacesCallback (
FnCallback
Интерфейс IDirectDraw
Группы методов интерфейса IDirectDraw
CreateSurface
Release
WaitForVerticalBlank
GetGDISurface
IDirectDraw:: AddRef
IDirectDraw:: Compact
IDirectDraw:: CreateClipper
IDirectDraw:: CreatePalette
DDPCAPS_1BIT
DDPCAPS_2BIT
DDPCAPS_4BIT
DDPCAPS_8BITENTRIES
DDPCAPS_8BIT
DDPCAPS_ALLOW256
IDirectDraw:: CreateSurface
DDERR_UNSUPPORTEDMODE
Сценарий 1
Сценарий 2
Сценарий 3
IDirectDraw:: DuplicateSurface
DDERR_SURFACELOST
IDirectDraw2:: EnumDisplayModes
DDEDM_REFRESHRATES
IDirectDraw:: EnumSurfaces
DDENUMSURFACES_ALL
DDENUMSURFACES_MATCH
DDENUMSURFACES_NOMATCH
DDENUMSURFACES_CANBECREATED
DDENUMSURFACES_DOESEXIST
IDirectDraw:: FlipToGDISurface
DDERR_NOTFOUND
IDirectDraw2:: GetAvailableVidMem
IDirectDraw:: GetCaps
IDirectDraw:: GetDisplayMode
DDERR_UNSUPPORTEDMODE
IDirectDraw:: GetFourCCCodes
HRESULT GetGDISurface (
IDirectDraw:: GetMonitorFrequency
IDirectDraw:: GetScanLine
IDirectDraw:: GetVerticalBlankStatus
IDirectDraw:: Initialize
Возвращает DDERR_ALREADYINITIALIZED.
IDirectDraw:: QueryInterface
IDirectDraw:: Release
IDirectDraw:: RestoreDisplayMode
IDirectDraw:: SetCooperativeLevel
DDSCL_ALLOWMODEX
DDSCL_ALLOWREBOOT
DDSCL_FULLSCREEN
DDSCL_NOWINDOWCHANGES
IDirectDraw2:: SetDisplayMode
IDirectDraw:: WaitForVerticalBlank
DDWAITVB_BLOCKBEGIN
DDWAITVB_BLOCKBEGINEVENT
DDWAITVB_BLOCKEND
Интерфейс IDirectDrawSurface
Группы методов интерфейса IDirectDrawSurface
Restore
Microsoft DirectX 2
ReleaseDC
Unlock
GetFlipStatus
SetClipper
SetPalette
HRESULT AddAttachedSurface (
DDERR_WASSTILLDRAWING
IDirectDrawSurface:: AddOverlayDirtyRect
IDirectDrawSurface:: AddRef
IDirectDrawSurface:: Blt
DDBLT_ALPHADEST
DDBLT_ALPHADESTCONSTOVERRIDE
DDBLT_ALPHADESTNEG
DDBLT_ALPHADESTSURFACEOVERRIDE
DDBLT_ALPHAEDGEBLEND
DDBLT_ALPHASRC
DDBLT_ALPHASRCCONSTOVERRIDE
DDBLT_ALPHASRCNEG
DDBLT_ALPHASRCSURFACEOVERRIDE
DDBLT_ASYNC
DDBLT_COLORFILL
DDBLT_DDFX
DDBLT_DDROPS
DDBLT_DEPTHFILL
DDBLT_KEYDEST
DDBLT_KEYDESTOVERRIDE
DDBLT_KEYSRC
DDBLT_KEYSRCOVERRIDE
DDBLT_ROP
DDBLT_ROTATIONANGLE
DDBLT_WAIT
DDBLT_ZBUFFER
DDBLT_ZBUFFERDESTCONSTOVERRIDE
DDBLT_ZBUFFERDESTOVERRIDE
DDBLT_ZBUFFERSRCCONSTOVERRIDE
DDBLT_ZBUFFERSRCOVERRIDE
IDirectDrawSurface:: BltBatch
IDirectDrawSurface:: BltFast
DDBLTFAST_DESTCOLORKEY
DDBLTFAST_SRCCOLORKEY
DDBLTFAST_WAIT
IDirectDrawSurface:: DeleteAttachedSurface
IDirectDrawSurface:: EnumAttachedSurfaces
IDirectDrawSurface:: EnumOverlayZOrders
DDENUMOVERLAYZ_FRONTTOBACK
HRESULT Flip(
DDERR_UNSUPPORTED
DDFLIP_WAIT
IDirectDrawSurface:: GetAttachedSurface
IDirectDrawSurface:: GetBltStatus
DDGBS_CANBLT
DDGBS_ISBLTDONE
IDirectDrawSurface:: GetCaps
HRESULT GetClipper (
DDERR_NOCLIPPERATTACHED
IDirectDrawSurface:: GetColorKey
DDCKEY_DESTBLT
DDCKEY_DESTOVERLAY
DDCKEY_SRCBLT
DDCKEY_SRCOVERLAY
IDirectDrawSurface:: GetDC
IDirectDrawSurface2:: GetDDInterface
IDirectDrawSurface:: GetFlipStatus
DDGFS_CANFLIP
DDGFS_ISFLIPDONE
IDirectDrawSurface:: GetOverlayPosition
HRESULT GetPalette (
DDERR_UNSUPPORTED
IDirectDrawSurface:: GetPixelFormat
DDERR_INVALIDSURFACETYPE
IDirectDrawSurface:: GetSurfaceDesc
IDirectDrawSurface:: Initialize
IDirectDrawSurface:: IsLost
IDirectDrawSurface:: Lock
DDLOCK_EVENT
DDLOCK_READONLY
DDLOCK_SURFACEMEMORYPTR
DDLOCK_WAIT
DDLOCK_WRITEONLY
IDirectDrawSurface2:: PageLock
IDirectDrawSurface2:: PageUnlock
IDirectDrawSurface:: QueryInterface
IDirectDrawSurface:: Release
IDirectDrawSurface:: ReleaseDC
IDirectDrawSurface:: Restore
DDERR_WRONGMODE
IDirectDrawSurface:: SetClipper
IDirectDrawSurface:: SetColorKey
DDCKEY_COLORSPACE
IDirectDrawSurface:: SetOverlayPosition
IDirectDrawSurface:: SetPalette
IDirectDrawSurface:: Unlock
IDirectDrawSurface:: UpdateOverlay
DDERR_XALIGN
DDOVER_ADDDIRTYRECT
DDOVER_ALPHADEST
DDOVER_ALPHADESTCONSTOVERRIDE
DDOVER_ALPHADESTNEG
DDOVER_ALPHADESTSURFACEOVERRIDE
DDOVER_ALPHAEDGEBLEND
DDOVER_ALPHASRC
DDOVER_ALPHASRCCONSTOVERRIDE
DDOVER_ALPHASRCNEG
DDOVER_ALPHASRCSURFACEOVERRIDE
DDOVER_DDFX
DDOVER_KEYDEST
DDOVER_KEYDESTOVERRIDE
DDOVER_KEYSRC
DDOVER_KEYSRCOVERRIDE
DDOVER_ZORDER
IDirectDrawSurface:: UpdateOverlayDisplay
DDOVER_REFRESHDIRTYRECTS
DDOVER_REFRESHALL
IDirectDrawSurface:: UpdateOverlayZOrder
DDOVERZ_INSERTINBACKOF
DDOVERZ_INSERTINFRONTOF
DDOVERZ_MOVEBACKWARD
DDOVERZ_MOVEFORWARD
DDOVERZ_SENDTOBACK
DDOVERZ_SENDTOFRONT
IDirectDrawPalette Интерфейс
Группы методов интерфейса IDirectDrawPalette
SetEntries
IDirectDrawPalette:: AddRef
IDirectDrawPalette:: GetCaps
LpdwCaps
IDirectDrawPalette:: GetEntries
DDERR_NOTPALETTIZED
IDirectDrawPalette:: Initialize
Возвраты DDERR_ALREADYINITIALIZED.
IDirectDrawPalette:: QueryInterface
IDirectDrawPalette:: Release
IDirectDrawPalette:: SetEntries
Группы методов интерфейса IDirectDrawClipper
IDirectDrawClipper:: AddRef
IDirectDrawClipper:: GetClipList
IDirectDrawClipper:: GetHWnd
IDirectDrawClipper:: Initialize
IDirectDrawClipper:: IsClipListChanged
IDirectDrawClipper:: QueryInterface
Microsoft DirectX 2
IDirectDrawClipper:: Release
IDirectDrawClipper:: SetClipList
IDirectDrawClipper:: SetHWnd
Typedef struct _DDBLTBATCH {
LpDDBltFx
Typedef struct _DDBLTFX {
DDBLTFX_ARITHSTRETCHY
DDBLTFX_MIRRORLEFTRIGHT
DDBLTFX_MIRRORUPDOWN
DDBLTFX_NOTEARING
DDBLTFX_ROTATE180
DDBLTFX_ROTATE270
DDBLTFX_ROTATE90
DDBLTFX_ZBUFFERBASEDEST
DDBLTFX_ZBUFFERRANGE
Typedef struct _DDCAPS {
DDCAPS_3D
DDCAPS_ALIGNBOUNDARYDEST
DDCAPS_ALIGNBOUNDARYSRC
DDCAPS_ALIGNSIZEDEST
DDCAPS_ALIGNSIZESRC
DDCAPS_ALIGNSTRIDE
DDCAPS_ALPHA
DDCAPS_BANKSWITCHED
DDCAPS_BLT
DDCAPS_BLTCOLORFILL
DDCAPS_BLTDEPTHFILL
DDCAPS_BLTFOURCC
DDCAPS_BLTQUEUE
DDCAPS_BLTSTRETCH
DDCAPS_CANBLTSYSMEM
DDCAPS_CANCLIP
DDCAPS_CANCLIPSTRETCHED
DDCAPS_COLORKEY
DDCAPS_COLORKEYHWASSIST
DDCAPS_GDI
DDCAPS_OVERLAY
DDCAPS_OVERLAYCANTCLIP
DDCAPS_OVERLAYFOURCC
DDCAPS_OVERLAYSTRETCH
DDCAPS_PALETTE
DDCAPS_PALETTEVSYNC
DDCAPS_READSCANLINE
DDCAPS_STEREOVIEW
DDCAPS_VBI
DDCAPS_ZBLTS
DDCAPS_ZOVERLAYS
DDCAPS2_CERTIFIED
DDCAPS2_NO2DDURING3DSCENE
DDCKEYCAPS_DESTBLT
DDCKEYCAPS_DESTBLTCLRSPACE
DDCKEYCAPS_DESTBLTCLRSPACEYUV
DDCKEYCAPS_DESTBLTYUV
DDCKEYCAPS_DESTOVERLAY
DDCKEYCAPS_DESTOVERLAYCLRSPACE
DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV
DDCKEYCAPS_DESTOVERLAYONEACTIVE
DDCKEYCAPS_DESTOVERLAYYUV
DDCKEYCAPS_NOCOSTOVERLAY
DDCKEYCAPS_SRCBLT
DDCKEYCAPS_SRCBLTCLRSPACE
DDCKEYCAPS_SRCBLTCLRSPACEYUV
DDCKEYCAPS_SRCBLTYUV
DDCKEYCAPS_SRCOVERLAY
DDCKEYCAPS_SRCOVERLAYCLRSPACE
DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV
DDCKEYCAPS_SRCOVERLAYONEACTIVE
DDCKEYCAPS_SRCOVERLAYYUV
DDFXCAPS_BLTARITHSTRETCHY
DDFXCAPS_BLTARITHSTRETCHYN
DDFXCAPS_BLTMIRRORLEFTRIGHT
DDFXCAPS_BLTMIRRORUPDOWN
DDFXCAPS_BLTROTATION
DDFXCAPS_BLTROTATION90
DDFXCAPS_BLTSHRINKX
DDFXCAPS_BLTSHRINKXN
DDFXCAPS_BLTSHRINKY
DDFXCAPS_BLTSHRINKYN
DDFXCAPS_BLTSTRETCHX
DDFXCAPS_BLTSTRETCHXN
DDFXCAPS_BLTSTRETCHY
DDFXCAPS_BLTSTRETCHYN
DDFXCAPS_OVERLAYARITHSTRETCHY
DDFXCAPS_OVERLAYARITHSTRETCHYN
DDFXCAPS_OVERLAYMIRRORLEFTRIGHT
DDFXCAPS_OVERLAYMIRRORUPDOWN
DDFXCAPS_OVERLAYSHRINKX
DDFXCAPS_OVERLAYSHRINKXN
DDFXCAPS_OVERLAYSHRINKY
DDFXCAPS_OVERLAYSHRINKYN
DDFXCAPS_OVERLAYSTRETCHX
DDFXCAPS_OVERLAYSTRETCHXN
DDFXCAPS_OVERLAYSTRETCHY
DDFXCAPS_OVERLAYSTRETCHYN
DDFXALPHACAPS_BLTALPHAEDGEBLEND
DDFXALPHACAPS_BLTALPHAPIXELS
DDFXALPHACAPS_BLTALPHAPIXELSNEG
DDFXALPHACAPS_BLTALPHASURFACES
DDFXALPHACAPS_BLTALPHASURFACESNEG
DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND
DDFXALPHACAPS_OVERLAYALPHAPIXELS
DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG
DDFXALPHACAPS_OVERLAYALPHASURFACES
DDFXALPHACAPS_OVERLAYALPHASURFACESNEG
DDPCAPS_1BIT
DDPCAPS_2BIT
DDPCAPS_4BIT
DDPCAPS_8BIT
DDSVCAPS_ENIGMA
DDSVCAPS_FLICKER
DDSVCAPS_REDBLUE
DDSVCAPS_SPLIT
DDBD_8,16,24,32
Typedef struct _DDCOLORKEY {
Typedef struct _DDOVERLAYFX {
DDOVERFX_ARITHSTRETCHY
DDOVERFX_MIRRORLEFTRIGHT
DDOVERFX_MIRRORUPDOWN
Typedef struct _DDPIXELFORMAT {
DDPF_ALPHA
DDPF_ALPHAPIXELS
DDPF_COMPRESSED
DDPF_PALETTEINDEXED1
DDPF_PALETTEINDEXEDTO8
DDPF_RGB
DDPF_RGBTOYUV
DDPF_YUV
DDPF_ZBUFFER
Typedef struct _DDSCAPS {
Microsoft DirectX 2
DDSCAPS_3D
DDSCAPS_3DDEVICE
DDSCAPS_ALLOCONLOAD
DDSCAPS_ALPHA
DDSCAPS_BACKBUFFER
DDSCAPS_COMPLEX
DDSCAPS_FLIP
DDSCAPS_FRONTBUFFER
DDSCAPS_HWCODEC
DDSCAPS_LIVEVIDEO
DDSCAPS_MIPMAP
DDSCAPS_MODEX
DDSCAPS_OFFSCREENPLAIN
DDSCAPS_OVERLAY
DDSCAPS_OWNDC
DDSCAPS_PALETTE
DDSCAPS_PRIMARYSURFACE
DDSCAPS_PRIMARYSURFACELEFT
DDSCAPS_TEXTURE
DDSCAPS_VIDEOMEMORY
DDSCAPS_VISIBLE
DDSCAPS_WRITEONLY
DDSCAPS_ZBUFFER
-
Програмируем 3D графику используя DirectX
Если вы умеете программировать на С, но еще не перешли на C++ — вот вам отличный повод сделать это! Мой собственный опыт работы с C++ не так уж велик, и примеры будут понятны любому программисту на С, которому в течение нескольких недель пришлось иметь дело с C++. Если же вы не программируете на С, то советую вам вообще пропустить знакомство с ним и сразу начать с C++.
Я разрабатывал свои приложения и классы C++ с чисто практической точки зрения. Другими словами, я попытался создать средства для решения конкретных задач, а не ряд бесконечных примеров для демонстрации тех или иных возможностей. Вы не найдете в моих примерах классов типа CDog, CLabrador или CAardvark. Это вовсе не означает, что мы пропустим большинство возможностей механизма визуализации — мы используем их в той степени, в какой они нужны нам для создания приложений.
Выражение признательности
Введение
Наше первое трехмерное
Расставляем декорации
Интерфейсы и классы
Создание фигур
Преобразования
Перемещение объектов
Проверка попадания
Цвет и текстуры
Спрайты
Свет и тень
Клипы
Интерфейс DirectDraw
DirectSD
Удаленная отладка в Visual C++
Глоссарий
Свет и тень
Клипы
Интерфейс DirectDraw
DirectSD
Удаленная отладка в Visual C++
Глоссарий
-
Программирование стратегических игр с DirectX 9.0
Если вы новичок или начинающий разработчик игр, и желаете создать основу для производства стратегической игры, эта книга прекрасно подойдет вам. Хотя я и рассматриваю в книге некоторые достаточно сложные темы, я стараюсь сделать их доступными для как можно большей аудитории. Если вы удостокенный многих титулов ветеран разработки игр, вы, возможно, пройдете мимо. После всего, что вы сделали, прочтите книгу! Серьезно, большинство программистов, знакомых с теорией программирования игр, могут воспользоваться примерами чтобы сэкономить время.
Все примеры в этой книге написаны на языке С++ и компилировались Microsoft VisualC++ версии 6.0. Хотя я и пользуюсь С++, вы обнаружите, что в большинстве кода применяются только базовые средства языка и я избегаю пользоваться шаблонами и другими возможностями С++, чтобы код оставался как можно более простым для восприятия.
Для кого предназначена эта книга
Краткий обзор
Первые стратегии реального времени
Utopia от Intellivision
Игровое поле
Земля
Здания
Океан
Корабли
Рыба, погода и пираты
Резюме
Populous от Bullfrog
Приманка
Строительство ландшафта
Первые популярные стратегии реального времени
Command Conquer от Westwood
История
Интерфейс
Экран радара
Индикаторы ресурсов
Объекты для постройки
Уровень энергии
Игровое поле
Технология
Баланс игры
Warcraft: Orcs Humans
StarCraft от Blizzard
Будущее стратегий реального времени
Широкомасштабные многопользовательские игры
Умные компьютеры
Первые стратегические игры
Warlords
Empire
Command H.Q.
The Seven Cities of Gold
X-COM: UFO Defense
Итоги
Программирование стратегических игр с DirectX 9.0
Архитектура программ Windows
Работа, управляемая событиями
События
Структура программы
Очередь событий
Функция WinMain()
Обработчик сообщений
Пишем первую программу для Windows
Начало работы с Visual C++ 6.0
Как создать проект
Рабочее пространство
Файлы ресурсов
Добавление исходных файлов в проект
Погружаемся и сталкиваемся с кодом
Включение файлов и прототипы функций
Внутреннее устройство функции WinMain()
Структура данных WNDCLASSEX
Функция RegisterClassEx()
Функция CreateWindowEx()
Функция ShowWindow()
Получение сообщений функцией GetMessage()
Трансляция сообщений функцией TranslateMessage()
Помещение сообщений в очередь функцией DispatchMessage()
Функция обработки сообщений
Компиляция и выполнение кода
Сюжет
Тема сюжета
Элементы сюжета
Сюжетная основа
Конечная цель сюжета
Расстановка целей
Пример для изучения Empire Earth
Описание событий
Начальные цели
Главные вехи
Заключительная цель
Боевые единицы
Стоимость боевых единиц
Скорость боевых единиц
Вычисление скорости боевых единиц
Броня боевых единиц
Вычисление обороноспособности
Очки повреждений
Огневая мощь боевых единиц
Скорострельность
Вычисление скорострельности
Тип повреждений
Специальные повреждения
Скорость оружия
Вычисление скорости снаряда
Управление ресурсами
Выберите, что вы будете пить
Определение ресурсов
Добыча ресурсов
Баланс ресурсов
Пример несбалансированности
Пример сбалансированности
Скорость добычи
Дерево технологий
Различные типы технологий
Технологии для инфраструктуры
Технологии для вооружений
Технологии для модернизации
Стоимость технологий
Игровая кампания
Редактор миссий
Цели миссий
Многопользовательская игра
Программирование стратегических игр с DirectX 9.0
Фаза идей
Создание наброска
Фаза определения требований
Фаза технической документации
Фаза разработки
Контроль исходного кода
Управление метками
Отслеживание ошибок
Отслеживание
Привязка к исходному коду
Метрики качества
Тестирование отдельных частей
Фаза тестирования
Фаза производства
Распространение
Условно-бесплатные программы
Сайты аукционов
Издатели
Краткий обзор
Основы блочной графики
Что такое блок?
Зачем использовать блоки?
Использование блоков для экономии памяти
Применение блоков для повторного использования графики
Использование блоков для динамического содержимого
Как создавать блоки?
Выбор размера блоков
Определение необходимых блоков
Как отображать блоки?
Отображение двухмерной сетки
Как вычислить местоположение в массиве
Как вычислить видимую позицию
Отображение изометрических блоков
Отображение трехмерных блоков
Многослойные блоки
Добавление деталей к блокам
Переходные блоки
Блоки с изображениями дорог
Как добавить трехмерные деревья
Анимированные блоки
Редактирование и хранение блоков
Хранение блоков в двухмерном массиве
Хранение многослойных блоков
Создание класса для представления блоков
Заголовок класса
Реализация класса
Пример использования класса
Свойства блоков
Проходимость
Возвышенность
Яркость
Смещение
Отображение блоков
Отображение двухмерных блоков
Архитектура проекта D3DFrame_2DTiles
Заголовочный файл Main.h
Файл программы Main.cpp
Отображение двухмерных изометрических блоков
Архитектура проекта D3DFrame_Isometric2DTiles
Заголовочный файл Main.h
Файл программы Main.cpp
Отображение двухмерных изометрических блоков со спрайтами
Архитектура проекта D3DFrame_Isometric2DSpriteTiles
Заголовочный файл Main.h
Файл программы Main.cpp
Зачем использовать спрайты?
Отображение трехмерных блоков
Архитектура проекта D3DFrame_3DTiles
Заголовочный файл Main.h
Файл программы Main.cpp
Загрузка трехмерных моделей
Точечный источник света
Визуализация трехмерных моделей
Программирование стратегических игр с DirectX 9.0
Краткий обзор
Определение требований к интерфейсу
Активные зоны и графика
Детализация схемы интерфейса
Взаимосвязь шаблонов интерфейса
Звуковое оформление интерфейса
Состояния интерфейса
Раскадровка интерфейса
Удобство и простота интерфейса
Щелчки мышью и взаимодействие с интерфейсом
Сложность навигации по меню
Согласованность интерфейса
Двухмерная графика в Direct3D
Архитектура проекта D3D_TitleScreen
Заголовочный файл Main.h
Ключевые типы данных Direct3D
Структура данных настраиваемого формата вершин (FVF)
Данные местоположения
Данные нормали
Данные текстуры
Определение формата вершины
Прототипы функций
Файл программы Main.cpp
Функция WinMain()
Вычисление смещения клиентской области
Функция InitD3D()
Создание объекта Direct3D
Настройка параметров отображения
Создание устройства трехмерной визуализации
Создание устройства трехмерной визуализации - 2
Настройка среды визуализации
Функция vInitInterfaceObjects()
Создание буфера вершин
Блокировка буфера вершин
Заполнение буфера вершин данными
Загрузка текстур
Функция vRender()
Функция vDrawInterfaceObject()
Горячие точки, или как я научился любить щелчки мыши
Обнаружение активных зон
Архитектура проекта D3D_MouseZones
Заголовочный файл Main.h
Глобальные данные активных зон
Файл программы Main.cpp
Функция WinMain()
Функция vSetupMouseZones()
Функция MouseZoneClass::vFreeZones()
Функция MouseZoneClass::vInitialize()
Функция MouseZoneClass::iAddZone()
Функция vCheckInput()
Управление щелчками мыши
Вычисление смещения клиентской области окна на рабочем столе
Вычисление местоположения указателя мыши
Функция MouseZoneClass::bCheckZones()
Обнаружение сообщений кнопок мыши
Выход из программы
Динамическое отображение меню
Заголовочный файл MouseZoneClass.h
Структура данных stHotSpot
Закрытые члены данных класса MouseZoneClass
Функции класса MouseZoneClass
Файл MouseZoneClass.cpp
Функция MouseZoneClass::MouseZoneClass()
Функция MouseZoneClass::vInitialize()
Функция MouseZoneClass::vFreeZones()
Функция MouseZoneClass::iAddZone()
Функция MouseZoneClass::iRemoveZone()
Функция MouseZoneClass::bCheckZones()
Подсветка пунктов меню
Архитектура проекта D3D_MouseZoneHighlights
Заголовочный файл Main.h
Файл программы Main.cpp
Как определить подсвечиваемую активную зону
Как определить подсвечиваемую активную зону - 2
Как создать подсвечиваемую активную зону
Как отобразить подсветку активной зоны
Программирование стратегических игр с DirectX 9.0
Звуковые API
Архитектура DirectMusic
Загрузчик DirectMusic
Исполнитель DirectMusic
Сегменты DirectMusic
Как воспроизвести файл WAV
Проект DMusic_PlaySound
Заголовочный файл Main.h
Файл программы Main.cpp
Функция bInitializeSoundSystem()
Как инициализировать COM
Создание интерфейса загрузчика
Создание интерфейса исполнителя
Инициализация аудиосистемы
Как регулировать громкость
Загрузка звукового файла
Как загрузить сегмент
Функция vPlaySound()
Воспроизведение звука
Как воспроизвести файл MIDI
Как воспроизвести файл MP3
DirectShow
Проект DShow_PlayMP3
Заголовочный файл Main.h
Граф фильтров
Управление аудиовизуальным потоком
События аудиовизуального потока
Позиционирование аудиовизуального потока
Файл программы Main.cpp
Функция bPlayTitleMusic()
Инициализация DirectShow
Загрузка музыкального файла
Установка темпа воспроизведения
Воспроизведение музыки
Перехват фоновых событий
Функция vCheckMusicStatus()
Проверка кода события
Остановка музыки
Перемотка музыки
Запуск музыки
Реализация классов звуковой системы
Класс звуковой системы
Определение класса звуковой системы
Определение класса звукового фрагмента
Реализация класса звуковой системы
Деструктор SoundSystem::~SoundSystem()
Функция SoundSystem::hrInitSoundSystem()
Функция SoundSystem::hrLoadSound()
Функция SoundSystem::hrPlaySound()
Реализация класса звукового фрагмента
Пример использования класса звуковой системы
Инициализация класса звуковой системы
Воспроизведение звуковых фрагментов
Использование класса звуковой системы в меню
Программирование стратегических игр с DirectX 9.0
Проектирование подразделений
Название подразделения
Способ передвижения
Передвижение по земле
Передвижение по воздуху
Передвижение по воде
Полеты в космосе
Скорость передвижения
Тип атаки
Тип защиты
Программирование шаблона
Класс CUnitDefense
Члены данных класса CUnitDefense
Коэффициенты защиты
Скорость восстановления
Название защиты
Методы класса CUnitDefense
Класс CUnitOffense
Члены данных класса CUnitOffense
Коэффициенты поражения
Радиус взрыва
Скорость снаряда
Дальнобойность
Название типа атаки
Методы класса CUnitOffense
Класс CUnitMovement
Члены данных класса CUnitMovement
Ускорение и торможение
Скорость поворота
Методы класса CUnitMovement
Класс CUnitAnimation
Члены данных класса CUnitAnimation
Анимация ожидания
Анимация передвижения
Анимация атаки
Анимация гибели
Начальный кадр анимации
Методы класса CUnitAnimation
Функция CUnitAnimation::vSetRenderDevice()
Функция CUnitAnimation::vLoadTextures()
Цвета владельца
Функция CUnitAnimation::vReset()
Класс CTexture
Члены данных класса CTexture
Методы класса CTexture
Функция CTexture::vLoad()
Функция CTexture::vRelease()
Функция CTexture::vSetRenderDevice()
Класс CUnit
Члены данных класса CUnit
Члены данных класса CUnit - 2
Методы класса CUnit
Функция CUnit::vReset()
Функция CUnit::vSetBaseValues()
Функция CUnit::vSetPosition()
Класс CUnitManager
Загрузка базовых типов
Функция CUnitManager::iLoadBaseTypes()
Функция CUnitManager::ptrGetDefenseType()
Создание подразделений
Функция CUnitManager::iAddUnit()
Управление текстурами
Рисование подразделений
Функция vDrawUnit()
Использование альфа-канала
Отображение активных подразделений
Обновление кадра анимации
Обработка ожидающих подразделений
Обработка поворачивающих подразделений
Обработка атакующих подразделений
Обработка гибнущих подразделений
Обработка перемещающихся подразделений
Загрузка и создание подразделений
Программирование стратегических игр с DirectX 9.0
Обзор DirectInput
Интерфейс IDirectInput8
Интерфейс IDirectInputDevice8
Ввод с клавиатуры
Проект DInput_Simple
Инициализация DirectInput
Функция iInitDirectInput()
Функция iInitKeyboard()
Буферизованный ввод с клавиатуры
Функция IDirectInputDevice8::SetProperty()
Установка формата данных клавиатуры
Установка уровня кооперации
Захват клавиатуры
Раскладка клавиатуры
Чтение данных клавиатуры
Функция iReadKeyboard()
Определение состояния DIK
Преобразование кода DIK в код ASCII
Ввод текста в игре
Навигация по меню
Активация ввода текста
Обработка текстового ввода
Отображение введенного текста
Интерфейс шрифта
Функция ID3DXFont::DrawText()
Программирование стратегических игр с DirectX 9.0
Основы редактирования карт
Компоненты редактора карт
Область редактирования
Область выбора блоков
Мини-карта
Область вывода информации
Просмотр карты
Глобальные переменные карты
Ход выполнения программы
Генерация случайной карты
Навигация по карте
Загрузка изображений блоков
Визуализация блоков
Редактирование карты
Программирование панели инструментов
Отображение блоков на панели инструментов
Сохранение и загрузка карты
Функция SaveMap()
Функция LoadMap()
Отображение мини-карты
Функция vCreateMinimap()
Функция vRenderMinimap()
Алгоритмы генерации карт
Функция vGenerateMap()
Методы генерации карт
Многослойные карты
Изменения в заголовочном файле
Многомерный массив
Функция смены слоя
Переменные для новых кнопок
Изменения в функции vCreateToolbar()
Функция vChangeLayer()
Изменение процедур сохранения и загрузки
Изменения в функции vRender()
Изменения в функции vCheckMouse()
Программирование стратегических игр с DirectX 9.0
Обзор трехмерной анимации
Сцена
Объекты
Фиксированные объекты
Ключевые кадры
Автоматическая вставка промежуточных кадров
Анимационные наборы
Импорт содержимого
Экспорт из 3ds max
Основы моделирования
Загрузка объекта
Программа Convert 3DS
Редактирование анимации
Готовые редакторы анимации
Программирование собственного редактора
Интерфейс редактора анимации
Команды редактора анимации
Команды работы с кадрами
Команды работы с объектами
Команды воспроизведения
Команды работы с файлами
Процесс редактирования
Сохранение и загрузка
Программирование редактора
Элементы управления программы D3D_AnimationEditor
Проект D3D_AnimationEditor
Класс C3DAnimation
Методы класса C3DAnimation
Члены данных класса C3DAnimation
Структура stKeyFrame
Реализация методов класса C3DAnimation
Конструктор класса C3DAnimation
Деструктор класса C3DAnimation
Функция C3DAnimation::vReset()
Функция C3DAnimation::vNewFrame()
Функция C3DAnimation::iNextFrame()
Функция C3DAnimation::iPrevFrame()
Функция C3DAnimation::iStartFrame()
Функция C3DAnimation::iNewObj()
Функция C3DAnimation::vUpdateTrans()
Функция C3DAnimation::vUpdateRot()
Функция C3DAnimation::vUpdateScale()
Функция C3DAnimation::vSave()
Функция C3DAnimation::vLoad()
Функция C3DAnimation::vSet3DDevice()
Программа D3D_AnimationEditor
Функция vInitAnimation()
Функция vLoadObject()
Создание кадров
Выбор необходимого объекта
Изменение местоположения объекта
Добавление ключевых кадров
Управление с клавиатуры
Что еще можно сделать
Реализация анимации
Задача поиска пути
Простое решение
Поиск пути по алгоритму A*
Основы A*
Начало поиска
Вычисление стоимости узлов
Базовая стоимость узла
Стоимость относительно начального узла
Стоимость относительно цели
Общая стоимость
Поиск наилучшего узла
Продолжение поиска
Обратная трассировка для нахождения пути
Реализация в коде
Функция инициализации пути
Функция CPathFinder::bFindPath()
Программирование стратегических игр с DirectX 9.0
Основные сведения о частицах
Характеристики частиц
Изображение частиц
Движение частиц
Анимация частиц
Структура класса частиц
Класс CVector
Класс CParticle
Члены данных
Методы класса
Функция CParticle::vUpdate()
Функция CParticle::vUpdate() - 2
Реализация системы частиц
Структура проекта D3D_Particles
Инициализация частиц
Визуализация частиц
Программирование стратегических игр с DirectX 9.0
Сетевые соединения
Игра по локальной сети
BNC шаг вперед!
Соединения витой парой
Соединение через кросс-кабель
Сеть с концентратором
Сеть с коммутатором
Маршрутизаторы ворота в Интернет
Маршрутизаторы ворота в Интернет - 2
Сетевые протоколы
Протокол TCP/IP
Протокол UDP
TCP/IP против UDP
Пакеты
Задержка
Одноранговые сети
Сети клиент-сервер
Сравнение одноранговых сетей и сетей клиент-сервер
Сокеты и DirectPlay
Пример программирования сокетов
Программа Sockets_Receive
Включение заголовочного файла WinSock
Установка версии WinSock
Создание сокета
Поиск сервера по URL
Установка номера порта
Подключение к серверу
Отправка данных серверу
Получение данных от сервера
Закрытие сокета
Отключение сокетов
Программирование сетевых походовых игр
Ход выполнения походовой игры
Программа Sockets_TurnGame
Глобальные переменные программы Sockets_TurnGame
Функции программы Sockets_TurnGame
Функция vHost()
Функция vConnect()
Функция vTurnDone()
Функция vSendTurnMessage()
Функция vReceiveTurnMessage()
Программирование стратегических игр с DirectX 9.0
Adobe Photoshop
Создание снимков экрана с помощью Photoshop
Диалоговое окно создания нового изображения
Установка атрибутов изображения
Вставка изображения из буфера
Компоновка изображения
Сохранение изображения
Слои
Эксперименты со слоями
Перемещение слоев
Изменение порядка слоев
Изменение прозрачности слоя
Эффекты
Свойства слоя
Параметры смешивания
Падающая тень
Фильтры
Альфа-карты
Делаем альфа-карту
Вкладка Channels
Инструмент Magic Wand
Выбор фрагмента
Создание маски
Инвертирование маски
Приложение B. Ресурсы для разработчика
Двухмерная графика
Трехмерная графика
Сообщества разработчиков игр
Аппаратное обеспечение