Глава 3. Общие сведения о GDI, DirectX, OpenGL Так, теперь разберёмся как выводится графика в ОС Windows. Начнём с того, что ни одна программа не может на прямую обращаться к видеокарте (как в MS DOS), все программы используют для этих целей средства ОС. Есть в системе специальный модуль, GDI, что значит "интерфейс графических устройств", именно он отвечает за все операции с графикой, им пользуется сама винда и все программы. Но GDI универсален, а значит, медлителен. Сейчас это не так критично, но в начале 90-х, когда компы были слабее в тысячу раз (почти) написать игру под GDI было почти невозможно - тормоза жуткие. И фирмы продолжали писать игры под ДОС - там был прямой доступ к видеопамяти, а значит, и огромная скорость работы игровых программ.
Добавлено (15.08.2009, 16:59)
---------------------------------------------
Конечно, дядю Билла это не устраивало - он продвигал Окошки как мог, а для них ничего серьёзней сапёров и пасьянсов небыло. все приличные игры - под ДОСом. Но ребята быстро исправились, включив в состав 95-х окон новый модуль, называемый DirectDraw. Это библиотека функций предоставляла прямой доступ к видеопамяти из-под Винды, а значит, теперь можно было быстро отрисовывать графику и под Виндой очень быстро! ДОС был убит окончательно.
Добавлено (15.08.2009, 17:19)
---------------------------------------------
Кстати, речь идёт о 2D графике. Да, 3D игры были уже тогда ("Doom", "Doom II"), но 3D технологии не поддерживались аппаратно, вся реализация 3D-эффектов лежала на плечах программистов. Но вот в 1998 году появляются аппаратные ускорители (акселераторы) 3D-графики от фирмы 3dfx. Они поставлялись в комплекте со специальной библиотекой функций Glide, которая позволяла программистам относительно просто создавать 3D графику. Так 3D игры из редкостных шедевров превратились в индустриальный стандарт. Microsoft не сидела сложа руки, и написала свою библиотеку 3D-функций, и назвала её Direct3D. Её стали использовать, как стандарт, новые игроки рынка - фирмы nVidia и ATI. Сначала они были на втором плане, на первом месте была 3dfx со своими видяхами и библиотекой Glide. Но в 2000 году компания разорилась, как следствие, Glide "умер", передовые позиции занял Direct3D, работающий на карточках nVidia и ATI. Microsoft объеденила Direct3D с DirectDraw, добавила туда ещё несколько библиотек (о них поговорим позже) - и получился знакомый нам DirectX
Добавлено (15.08.2009, 17:31)
---------------------------------------------
DirectX является "основой" любого движка игры под Винду. Т.е. офисные приложения используют GDI, а игровые - DirectX. Что же он из себя представляет? Набор библиотек, а именно:
DirectDraw - обеспечивает прямой доступ к видеопамяти (быстрая прорисовка 2D графики)
Direct3D - рендер 3D графики на карточках nVidia и ATI
DirectPlay - набор функций для быстрого написания сетевых игр
DirectShow - набор функций для воспроизведения видеороликов
DirectSound - библиотека звуковых функций (для создания звуковых 3D - эффектов)
DirectInput - функции асинхронного ввода с клавиатуры, джойстика и других геймерских устройств (типа руля)
Как видим, весьма неплохой набор, всё что нужно для создания игр. Microsoft не зря старалась, ведь чем проще делать игры под Винду, тем их будет больше сделано, а чем их будет больше - тем популярнее будет Винда!
Блиц, напомню, использует 7-ю версию этого самого Икса.
А теперь пару слов об OpenGL. Это открытая графическая библиотека, спецификация которой разработана фирмой Silicon Graphics. В отличие от DirectX , мультиплатформена (а Икс идёт только под Виндой), имеется реализация для Окошек. Является чисто графической библиотекой, ничего другого в ней нет. Так что если задумали делать игру на её основе, ищите также звуковую библиотеку (рекомендую OpenAL), сетевой движок и т.п. Большинство игровых движков для Винды делаются всё-таки под ДиректИкс, но некоторые могут использовать и OpenGL, и DirectX (в зависимости от настроек). В Блице OpenGL не используется.
Добавлено (15.08.2009, 18:12)
---------------------------------------------
Ну вот, первые три главы написаны, первая часть окончена. Теперь я хотел бы увидеть реакцию читателей. Пока он у меня только один) Но если наберётся человек 10, которые будут читать и обсуждать сию писанину, то я продолжу. А пока что разрешите откланяться)) Всегда ваш, NDV89
Добавлено (15.08.2009, 19:36)
---------------------------------------------
Часть вторая. Программирование в текстовом режиме
Глава 1. Структура программы
Итак, начнём-с. Любая программа представляет собой набор инструкций, которые выполняются компьютером (что приводит нас к желаемому результату). Компьютер выполняет инструкции слева направо и сверху вниз, т.е. "читает" нашу программу также, как и мы) Правда, с помощью специальных операторов этот порядок можно изменить, т.е. заставить компьютер пропускать или повторять некоторые участки кода. Но обо всём по-порядку. Сначала разберёмся с терминами:
исходный текст(далее - исходник) - то, что вы пишите на языке BASIC, и что будет превращено компилятором в исполняемый модуль(экзешник)
инструкции - общее название для элементов, из которых состоит исходник. Вообще, любой исходник состит из инструкций и комментариев. Инструкции превращаются в машинный код, а комментарии игнорируются.
Инструкции в свою очередь делятся на:
декларации
операции
операторы
вызовы функций
Не будем сейчас выяснять, что это значит, я объясню это по ходу дела) А сейчас у нас другая задача - написать хоть что-то рабочее. Итак, открываем Блиц и пишем:
Print "Hello, world!"
WaitKey
End
Это наше первое приложение, оно простое, но все великие дела начинались с малого) Сохраните его (Блиц предлагает расширение .bb, соглашайтесь), затем проверьте на наличие ошибок, нажав F7. Ошибок быть не должно! Затем запускаем клавишей F5 и любуемся результатом. Потом жмём любую клавишу - прога закрывается.
Добавлено (15.08.2009, 19:54)
---------------------------------------------
Так, ну хорошо, мы запускаем эту прогу по F5 , а как быть пользователю? Ставить себе Блиц и загружать в него наш *.bb - файл. Нет, так дело не пойдет. Пользователя интересует файл ехе, и нам надо его сделать. Все просто! Меню Program => CreateExecutable. Вот и вся любовь) Выбираем папку для сохранения нашего творения и жмем Сохранить. Всё, ехе-шник готов. Его то мы и отдадим пользователям.
Пока пользователи мучаются с нашей прогой, пытаемся в ней разобратся. Итак, три строчки.
Print "Hello, world!"
здесь происходит вызов функции Print из стандартной библиотеки функций Блица. Она печатает переданные ей данные. В нашем случае передаётся текст, который и будет напечатан на экране. Текст обязательно должен быть взят в кавычки. При этом кавычки не являются частью текста и на экран выведены не будут!
Добавлено (15.08.2009, 20:04)
---------------------------------------------
WaitKey
вызов функции WaitKey из стандартной библиотеки функций. Она просто останавливает работу программы и ждет нажатия произвольной клавиши, после чего программа продолжит свою работу.
End
это оператор, которы завершает работу программы. Его можно не писать, но я стараюсь соблюдать правила хорошего тона)
Добавлено (15.08.2009, 20:15)
---------------------------------------------
Как видим, в программах на Блице нет никакой чёткой структуры. Вы пишете то что вам нужно, там где вам нужно, и всё прекрасно работает) А теперь наберите такой вот интересный код:
Print 1 + 2
Print "1" + "2"
WaitKey
End
ну как, вы в состоянии объяснить результаты? Я жду ваших ответов здесь, когда их будет как минимум три, я продолжу уроки)