1. Начинаем разработку компьютерной игры.

    • ​Окно Windows

      Пора добавить в нашу заготовку небольшой код для вывода пустого окна на экран. Для начала поработаем с заголовочным файлом Precompiled.h. Чтобы создать окно нам понадобятся следующие классы ATL: CWindowImpl, CWindow и CWinTraits, которые описаны в заголовочном файле atlwin.h. Для удобства создадим структуру данных DesktopWindow (по сути это класс окна). Также переопределим макрос для верификации критичных по использованию ресурсов функций (ATLVERIFY).

      Итак, добавим код в класс нашего окна. Используем макрос для объявления окна и зададим его карту сообщений, а также напишем функции для обеспечения минимальной функциональности приложения.

      DECLARE_WND_CLASS_EX(L"window", CS_HREDRAW | CS_VREDRAW, -1);

      BEGIN_MSG_MAP(DesktopWindow)

      MESSAGE_HANDLER(WM_PAINT, PaintHandler)

      MESSAGE_HANDLER(WM_DESTROY, DestroyHandler)

      END_MSG_MAP()

      LRESULT PaintHandler(UINT, WPARAM, LPARAM, BOOL &)

      {

      PAINTSTRUCT ps;

      VERIFY(BeginPaint(&ps));

      Render();

      EndPaint(&ps);

      return 0;

      }

      LRESULT DestroyHandler(UINT, WPARAM, LPARAM, BOOL &)

      {

      PostQuitMessage(0);

      return 0;

      }

      void Render()

      {

      }

      Теперь перейдем в основной файл программы. Здесь мы создадим объект нашего класса и цикл обработки сообщений.

      DesktopWindow Hanoi;

      VERIFY(Hanoi.Create(nullptr, 0, L"Задача о ханойских башнях"));

      MSG message;

      BOOL result;

      while (result = GetMessage(&message, 0, 0, 0))

      {

      if (-1 != result)

      {

      DispatchMessage(&message);

      }

      }

      Теперь скомпилируем программу и, наконец, увидим наше пустое окно.

      Комментариев: 0
    • Небольшой набросок

      Настало время подумать, каких результатов мы хотим добиться. В этом исследовании я ограничусь небольшим проектом, в котором будет проиллюстрирована всем известная задача о ханойских башнях.

      Итак, вот план разработки нашего приложения:

      • Необходимо создать минимальную заготовку для окна с использованием ATL.
      • С помощью объектно-ориентированного программирования, зададим структуру программы.
      • Потом, свойства окна программы.
      • На следующем шаге подключим Direct2D.
      • Научимся «рисовать» прямоугольники, из которых и будет состоять основная картинка.
      • Немного поработаем над анимацией.
      • Поманипулируем с дисками Ханойской башни при помощи мыши.
      • И напоследок добавим кнопки для более гибкого управления программой.

      Начнем с заготовки.

      Создадим новый проект в среде Visual Stidio 2013.

      Это будет пустой проект Win32.

      Добавим в наш проект 3 файла: HanoiDirect2D.cpp, Precompiled.cpp, Precompiled.h.

      Перейдем в свойства файла Precompiled.cpp.

      И настроим пункт "Предварительно откомпилированные заголовки".

      Напоследок добавим минимальное количество кода, чтобы наша программа работала (у нашей программы пока нет своего окна, но компилятор не находит ошибок и она работает).

      // HanoiDirect2D.cpp

      #include "Precompiled.h"

      int __stdcall wWinMain(HINSTANCE module, HINSTANCE, PWSTR, int)

      {

      return 0;

      }

      // Precompiled.cpp

      #include "Precompiled.h"

      // Precompiled.h

      #pragma once

      #include <atlbase.h>

      Комментариев: 0
    • Попробуем сделать что-то…

      Итак, нужно выбрать сферу деятельности, с которой мы начнем: рисование, моделирование или программирование. И я выбираю… программирование. Все остальное, возможно, я даже не затрону в этом исследовании.

      Можно выбрать какой-нибудь готовый движок и заняться написанием скриптов для него, а также углубиться в изучение его исходного кода, чтобы внести необходимые правки для нужд игры. Но мы пока приступим к изучению одного из интерфейсов программирования DirectX и это будет Direct2D.

      3fbcbe92-2fa6-11e5-895a-08606e697fd7

      Direct2D обладает несложной структурой и это хороший старт для первого знакомства с DirectX вообще и с Direct3D в частности. Для начала необходимо поверхностно ознакомится c Component Object Model (COM), который тесно связан с DirectX и ATL, которую мы используем в качестве первичной объектной структуры нашего главного окна.

      Комментариев: 0
    • Ну что ж посмотрим, что получится...

      Начнем

      Прочитать полностью
      Комментариев: 0