libcats.org
Программирование трехмерных игр для Windows
Данная книга представляет собой продолжение книги Андре Ламотa »Программирование игр для Windows. Советы профессионала» и посвящена созданию трехмерных игр. В книге освещены различные аспекты разработки трехмерных игр, однако основное внимание уделяется вопросам программирования трехмерных игр — в частности, представления трехмерных объектов, их визуализации с учетом свойств материала объектов, освещения, перспективы, а также таким специфическим вопросам трехмерной Визуализации, как создание различных визуальных спецэффектов и т.п. В книге также рассматриваются многие сопутствующие вопросы — создание и применение звуковых эффектов и музыкального сопровождения, использование различных форматов файлов и соответствующего инструментария.Книга написана выдающимся специалистом в области программирования игр с многолетним стажем, и полезна как начинающим, так и профессиональным разработчикам игр для Windows. Однако следует учесть, что она рассчитана в первую очередь на опытного специалиста, владеющего языком программирования C++, а также имеющего определенную математическую подготовку. Хотя данная книга может рассматриваться как отдельное издание, желательно приступать к ней после ознакомления с упомянутой ранее книгой.
Популярные книги за неделю:
Только что пользователи скачали эти книги:
М.: Вильямс, 2004. — 1424 с. — ISBN 5-8459-0627-X
Данная книга представляет собой продолжение книги Андре Ламота Программирование игр для Windows. Советы профессионала и посвящена созданию трехмерных игр. В книге освещены различные аспекты разработки трехмерных игр, однако основное внимание уделяется вопросам программирования трехмерных игр — в частности, представления трехмерных объектов, их визуализации с учетом свойств материала объектов, освещения, перспективы, а также таким специфическим вопросам трехмерной визуализации, как создание различных визуальных спецэффектов и т. п. В книге также рассматриваются многие сопутствующие вопросы — создание и применение звуковых эффектов и музыкального сопровождения, использование различных форматов файлов и соответствующего инструментария.
Книга написана выдающимся специалистом в области программирования игр с многолетним стажем, и полезна как начинающим, так и профессиональным разработчикам игр для Windows. Однако следует учесть, что она рассчитана в первую очередь на опытного специалиста, владеющего языком программирования C++, а также имеющего определенную математическую подготовку. Хотя данная книга может рассматриваться как отдельное издание, желательно приступать к ней после ознакомления с упомянутой ранее книгой.
Оглавление.
Предисловие.
Об авторе.
О техническом редакторе.
Благодарности.
Введение.
Введение в программирование трехмерных игр.
Основы программирования трехмерных игр.
Краткий курс Windows и DirectX.
Виртуальный компьютер для программирования трехмерных игр.
Трехмерная математика и преобразования.
Запутанный мир математики.
Создание математической библиотеки.
Введение в трехмерную графику.
Визуализация трехмерных каркасных объектов.
Основы трехмерной визуализации.
Основы моделирования освещения и поверхностей тел.
Интерполяционные методы затенения и аффинное отображение текстур.
Отсечение в трехмерном пространстве.
Организация буфера глубины и видимость.
Секреты трехмерной визуализации.
Методы сложного текстурирования.
Алгоритмы разбиения пространства и определения видимости.
Освещение и тени.
Анимация, физическое моделирование и оптимизация.
Анимация, движение и обнаружение столкновений.
Технологии оптимизации.
Предметный указатель.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 |
//Sunday - Main.cpp #define WIN32_LEAN_AND_MEAN #define INITGUID #include <windows.h> #include <time.h> #include <ddraw.h> // DEFINES //////////////////////////////////////////////// #define WINDOW_CLASS_NAME "WINCLASS" #define WINDOW_TITLE "Graphics Console" #define WINDOW_WIDTH 800 #define WINDOW_HEIGHT 600 #define WINDOW_BPP 16 // bitdepth of window (8,16,24,32) // note: if windowed and not // fullscreen then bitdepth must // be same as system bitdepth // also if 8-bit the a pallete // is created and attached #define WINDOWED_APP 0 // 0 not windowed, 1 windowed #define MSG_ERROR MessageBox(NULL, "ERROR", "MSG_ERROR", MB_OK) #define _RGB16BIT565(r, g, b) ((b & 31) + ((g & 63) << 5) + ((r & 31) << 11)) #define _RGB32BIT(a, r, g, b) ((b) + ((g) << 8) + ((r) << 16) + ((a) << 24)) // PROTOTYPES ///////////////////////////////////////////// int Game_Init(void *parms=NULL); int Game_Shutdown(void *parms=NULL); int Game_Main(void *parms=NULL); // GLOBALS //////////////////////////////////////////////// LPDIRECTDRAW7 lpdd = NULL; LPDIRECTDRAWSURFACE7 lpddsprimary = NULL; LPDIRECTDRAWSURFACE7 lpddsback = NULL; DDSURFACEDESC2 ddsd ; HWND main_window_handle = NULL; // save the window handle HINSTANCE main_instance = NULL; // save the instance char buffer[256]; // used to print text int window_closed; // FUNCTIONS ////////////////////////////////////////////// void Plot16(int x, int y, int red, int green, int blue, UINT *buffer, int mempitch) { buffer[x+y*(mempitch >> 1)] = _RGB16BIT565(red, green, blue); } void Plot32(int x, int y, int alpha, int red, int green, int blue,UINT *buffer, int mempitch) { buffer[x+y*(mempitch >> 2)] = _RGB32BIT(alpha, red, green, blue); } int Game_Init(void *parms) { if(FAILED(DirectDrawCreateEx(NULL, (void**)&lpdd, IID_IDirectDraw7, NULL))) return(0); if(FAILED(lpdd -> SetCooperativeLevel(main_window_handle, DDSCL_FULLSCREEN | DDSCL_EXCLUSIVE | DDSCL_ALLOWREBOOT))) return(0); if(FAILED(lpdd -> SetDisplayMode(WINDOW_WIDTH, WINDOW_HEIGHT, WINDOW_BPP,0,0))) return(0); ZeroMemory(&ddsd, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT; ddsd.dwBackBufferCount = 1; ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_COMPLEX |DDSCAPS_FLIP; if(FAILED(lpdd -> CreateSurface(&ddsd, &lpddsprimary, NULL))) return(0); ddsd.ddsCaps.dwCaps = DDSCAPS_BACKBUFFER; if(FAILED(lpddsprimary -> GetAttachedSurface(&ddsd.ddsCaps, &lpddsback))) return(0); return(1); } int Game_Main(void *parms) { if(window_closed) return(0); if(GetAsyncKeyState(VK_ESCAPE)) { PostMessage(main_window_handle, WM_DESTROY,0,0); window_closed = 1; } ZeroMemory(&ddsd, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); if(FAILED(lpddsprimary -> Lock(NULL, &ddsd, DDLOCK_SURFACEMEMORYPTR | DDLOCK_WAIT, NULL))) return(0); UCHAR *back_buffer = (UCHAR *)ddsd.lpSurface; if (ddsd.lPitch == WINDOW_WIDTH) memset(back_buffer, 0, WINDOW_WIDTH*WINDOW_HEIGHT); else { UCHAR *dest_ptr = back_buffer; for (int y=0; y<WINDOW_HEIGHT; y++) { memset(dest_ptr,0,WINDOW_WIDTH); dest_ptr+=ddsd.lPitch; } } for(int i=0; i<500; i++) { int x=rand()%WINDOW_WIDTH; int y=rand()%WINDOW_HEIGHT; back_buffer[x+y*ddsd.lPitch] = _RGB16BIT565(255, 255, 255); } if(FAILED(lpddsprimary -> Unlock(NULL))) return(0); while (FAILED(lpddsprimary->Flip(NULL, DDFLIP_WAIT))); Sleep(500); return(1); } int Game_Shutdown(void *parms) { if(lpddsback) { lpddsback -> Release(); lpddsback = NULL; } if(lpddsprimary) { lpddsprimary -> Release(); lpddsprimary = NULL; } if(lpdd) { lpdd -> Release(); lpdd = NULL; } return(1); } LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { switch(msg) { case WM_CREATE: { return(0); } break; case WM_PAINT: { return(0); } break; case WM_DESTROY: { PostQuitMessage(0); return(0); } break; default:break; } return (DefWindowProc(hwnd, msg, wparam, lparam)); } // WINMAIN //////////////////////////////////////////////// int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance,LPSTR lpcmdline, int nshowcmd) { WNDCLASSEX winclass1; HWND hwnd; MSG msg; srand(1); ZeroMemory(&winclass1, sizeof(winclass1)); winclass1.lpszClassName = WINDOW_CLASS_NAME; winclass1.lpfnWndProc = WindowProc; winclass1.cbSize = sizeof(WNDCLASSEX); winclass1.hInstance = hinstance; winclass1.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); winclass1.hCursor = LoadCursor(NULL, IDC_ARROW); winclass1.hIcon = LoadIcon(NULL, IDI_APPLICATION); winclass1.hIconSm = LoadIcon(NULL, IDI_APPLICATION); winclass1.style = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW; if(!RegisterClassEx(&winclass1)) return(MSG_ERROR); if (!(hwnd = CreateWindowEx(NULL, WINDOW_CLASS_NAME, WINDOW_TITLE, WS_POPUP | WS_VISIBLE,0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, NULL, NULL, hinstance, NULL))) return(MSG_ERROR); main_window_handle = hwnd; main_instance = hinstance; Game_Init(); while(TRUE) { if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { if (msg.message == WM_QUIT) break; TranslateMessage(&msg); DispatchMessage(&msg); } Game_Main(); } Game_Shutdown(); return(msg.wParam); } |
Загрузка…
Навазние: Программирование трехмерных игр для Windows. Советы профессионала по трехмерной графике и растеризации
Автор: Андре Ламот
Издательство: Вильямс
Год: 2004
ISBN: 5-8459-0627-X
DJVU: 14 Мб
+ 36 Мб (исходный код)
Книга Андре Ламота «Программирование трехмерных игр для Windows. Советы профессионала по трехмерной графике и растеризации» является продолжением книги «Программирование игр для Windows. Советы профессионала» и содержит в себе теоретический материал для создания трехмерных игр. Здесь приводятся разные нюансы разработки трехмерных игр, в основном обсуждаются вопросы программирования трехмерных игр, представления трехмерных объектов, их визуализации с учетом свойств материала объектов, освещения, перспективы и вопросы создания различных визуальных спецэффектов. Рассматриваются темы создания и применения звуковых эффектов и музыкального сопровождения, использование различных форматов файлов и соответствующего инструментария. Книга пригодится программистам с разным опытом работы знакомым с языком С++ и имеющим определенную математическую подготовку. Перед изучением данной книги желательно ознакомиться с ее первым томом.
14,744 просмотров всего, 2 просмотров сегодня
Программирование игр. Сборник (4 книги+ 4 CD)
Автор: decomeron от 3-08-2016, 22:53, Коментариев: 0
Категория: КНИГИ » ПРОГРАММИРОВАНИЕ
Название: Программирование игр. Сборник (4 книги+ 4 CD)
Издательство: Вильямс, Питер
Автор: Андрэ Ламот
Год: 1995-2007
Количество страниц:498+1424+718+877
Язык:русский
Формат:pdf+CD
Размер:1,2 Gb
Эти книги написаны выдающимся специалистом в области программирования игр с многолетним стажем, и полезны как начинающим, так и профессиональным разработчикам игр.
Андре Ламот – легенда малоразрядных консолей и игр для них, научный сотрудник NASA с двадцатилетнего возраста, один из разработчиков первой суперкомпьютерной системы виртуальной реальности, создал на основе процессора Propeller набор «сделай сам игровую консоль» под названием HYDRA. HYDRA – полностью открытая для пользователя система, в ней документировано и доступно все – от аппаратных средств и микропрограмм до библиотек и инструментария.
Андре Ламот, СЕО компании Xtreme Games LLC и создатель XGameStation, работает с компьютерами более 27 лет. Работал с двумерной и трехмерной графикой, занимался исследованиями в области искусственного интеллекта в NASA, создавал компиляторы, участвовал в проектировании роботов, систем виртуальной реальности и коммуникационных систем. Его книги — бестселлеры по программированию игр, и его опыт отражен в книгах серии «Game Development» издательства
Секреты программирования игр
Первое отечественное издание, представляющее полное руководство по программированию игр любого уровня сложности, включая сложные динамические игры со звуковыми эффектами (типа DOOM). Книга написана известными специалистами и содержит массу ценнейших советов по программированию различных игровых эффектов и ведению проекта от идеи до ее практической реализации с использованием всего спектра аппаратного обеспечения персонального компьютера (различных видеокарт, звуковых карт и т. п.). Для чтения книги необходимо знакомство с языком С. На прилагаемой дискете содержатся все исходные тексты
Программирование игр для Windows. Советы профессионала
Книга представляет собой введение в DirectX для разработчиков игр для
Windows. Определенные знания в области программирования (в частности, языка программирования C или C++), математики и физики облегчат изучение материала.
Программирование трехмерных игр для Windows
Книга написана выдающимся специалистом в области программирования игр с многолетним стажем, и полезна как начинающим, так и профессиональным разработчикам игр.
Книга рассчитана на опытного специалиста, владеющего языком программирования C++, и имеющего определенную математическую подготовку. Желательно приступать к ней после ознакомления с упомянутыми ранее книгами.
В книге освещены различные аспекты разработки трехмерных игр, однако основное внимание уделяется вопросам представления трехмерных объектов, их визуализации с учетом свойств материала объектов, освещения, перспективы.
Физика для разработчиков компьютерных игр
Моделирование физических законов реального мира все шире используется в играх. Оно позволяет создавать» великолепно выглядящие игры, и является практически единственным инструментом, позволяющим создавать игры реалистичные. Компании, занимающиеся созданием компьютерных игр, постоянно ищут программистов, разбирающихся в физике.
Хорошее знание физики может превратить человека с незначительными познаниями в программировании в ценного специалиста.
Современные компьютерные игры в большинстве своем изображают целые виртуальные миры. Эти виртуальные миры могут выглядеть и функционировать так, как считают нужным их создатели. Однако если мы — создатели — хотим, чтобы игра была понятна игрокам и привлекала их, мы должны создавать миры, более или менее соответствующие реальности. А поведение и внешний вид реального мира — это и есть предмет физики.
depositfiles.com
turbobit.net
Нашел ошибку? Есть жалоба? Жми!
Пожаловаться администрации
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.