ФЭНДОМ


ВведениеПравить

Мне всегда нравилось работать с всякими "техническими" темами в программировании - движками, графикой и т.д., больше чем разрабатывать игры. В начале, я пытался изучить OpenGL. Но мне не особо понравился этот GAPI, поэтому я обратил внимание на DirectX 11. И то что я увидел - мне очень понравилось. Но по каким-то странным причинам в интернете до сих пор мало толковых уроков по этой GAPI. А на русском вообще только переработки примеров из SDK. Это одна из причин - почему я решил восполнить этот пробел. Вторая причина - я плохо читаю английскую документацию и быстро теряю нить повествования, поэтому, сколько бы я не пытался читать их, я забывал почти все на следующий день. А изучать-то DirectX как-то надо... Это вторая причина. Я буду стараться расписывать уроки так, чтобы они откладывались в голове. Но предупреждаю - я не профи, я сам только начинаю путь изучения DX11.

Какие знания вы должны иметь?Править

Для начала вы должны иметь уверенные знания С++. Уверенные, означает что вы должны:

  • уметь компилировать ваш код
  • знать, как создать проект и настроить его (то есть задать расположение заголовков и библиотек, а также указать опции компиляции и линковки)
  • знать что такое переменные, динамическая память, статические переменные, циклы, условия, и вообще весь синтаксис C++
  • знать ООП, хотя бы базовые понятия (полиморфизм, инкапсуляция и наследование) и уметь их применять (то есть знать хотя бы про виртуальные функции)
  • знать STL, хотя бы просто основные контейнеры
  • знать шаблоны - как они вообще выглядят и как ими пользоваться. Вообще я постараюсь не использовать их, но несколько макросов, и скорее всего код для работы с математикой будут их использовать.
  • обязательно знать, что такое статическая библиотека, как ее создавать, как ее подключать к проекту, как пользоваться кодом из нее.
  • желательно знать, что такое пред компилированные заголовки - для чего они, как ими пользоваться

Если у вас нет этих знаний и вы столкнетесь с какими-то трудностями, то не вините в этом меня. Я предупредил, изучение DirectX или OpenGl не для новичков.

Что вам нужноПравить

  • IDE. Все уроки, а также выкладываемый код, рассчитаны на использование Visual Studio 2010 и старше. Вы можете использовать любую другую IDE. Но есть одно обязательное условие - ваша IDE должна поддерживать новый стандарт С++ 11, хотя бы на уровне VS2010.
  • DirectX SDK. Последний официальный - Microsoft DirectX SDK (June 2010). Хотя есть уже новый SDK 11.1, но он находится в Windows SDK, а я пока себе это не качал. Возможно в далеком будущем перейду и перепишу уроки.
  • Мозг. Много мозга:)
  • Руки из нужного места.

Вот вам первое испытание - найдите через гугл все что нужно, установите. зайдите в Microsoft DirectX SDK (June 2010)\Samples\C++\Direct3D11\Tutorials\Tutorial01, Откройте Tutorial01_2010.sln. Скомпилируйте. Если все прошло удачно и вы получили приложение которое можно запускать, продолжайте чтение. Если компилируется, запускается и тут же закрывается, попробуйте открыть файл Tutorial01.cpp, найти функцию InitDevice() и стереть следующий код:

 ...

#ifdef _DEBUG     
    createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG; 
#endif

 ...

Если у вас возникли другие проблемы или у вас другая IDE - то вам стоит еще немного поучиться программировать:)

Об организации уроковПравить

Каждый урок будет посвящен какой-то одной теме. Изучать уроки стоит по порядку, так как каждый следующий опирается на знания из предыдущего. Для уроков мы напишем свой собственный фреймворк который и будем использовать во всех уроках... и возможно, когда-нибудь в далеком будущем и при соответствующей поддержке с вашей стороны, этот фреймворк может перерасти в игровой движок. Урок состоит из частей. В начале урока идет теория нужная для понимания урока. Далее идет код и описание работы этого кода. В конце показан результат и даны ссылки на исходники урока (включая нужную версию фреймворка).

Как пользоваться урокамиПравить

Я надеюсь, что вы пришли сюда чтобы изучить DirectX, а не на картинки посмотреть. Поэтому - НИКАКОЙ КОПИПАСТЫ. Читайте и тут же пишите код - я специально пишу именно в таком стиле, чтобы вам было удобно это сразу же делать. В конце урока я конечно буду выкладывать весь код и собранный пример. Но это нужно только чтобы сверить, вдруг у вас что-то неправильно написано. Еще раз - если вы тупо полистаете статьи и пособираете готовый код - ВЫ НЕ ИЗУЧИТЕ DIRECTX. Не ленитесь, пишите весь код руками, именно ради этого я и сделал фреймворк - чтобы вам не приходилось печатать ненужный и лишний код, и вы могли полностью заняться кодом примера.

Материалы сообщества доступны в соответствии с условиями лицензии CC-BY-SA , если не указано иное.