Рубрика «DirectX» - 3

Разработка трехмерных игр для Windows 8 с помощью C++ и Microsoft DirectX

Разработка игр — постоянно актуальная тема: всем нравится играть в игры, их охотно покупают, поэтому их выгодно продавать. Но при разработке хороших игр следует обращать немало внимания на производительность. Никому не понравится игра, «тормозящая» или работающая рывками даже на не самых мощных устройствах.
В этой статье я покажу, как разработать простую футбольную 3D игру с использованием Microsoft DirectX и C++, хотя главным образом я занимаюсь разработкой на C#. В прошлом я довольно много работал с C++, но теперь этот язык для меня уже не столь прост. Кроме того, DirectX для меня является новинкой, поэтому эту статью можно считать точкой зрения новичка на разработку игр. Прошу опытных разработчиков простить меня за возможные ошибки.
Читать полностью »

HDR vs LDR, реализация HDR Rendering

Как я и обещал – публикую вторую статью о некоторых моментах разработки игр в трех измерениях. Сегодня расскажу об одной технике, которая используется почти любом проекте ААА-класса. Имя ей — HDR Rendering. Если интересно — добро пожаловать под хабракат.
Читать полностью »

Введение

imageКаждый, играя, хоть раз думал: «вот бы написать программу, которая играла бы за меня!». Но обычно эта мысль, так мыслью и остается… Постоянно что-то мешает: незнание с чего начать, страх перед неподъемностью задачи, шепоток из-за левого плеча «и зачем это? кому это надо, чтобы программа играла с программой?» и т.д.

В данном цикле статей я собираюсь показать, что, во-первых: «не так страшен черт, как его малюют», а во-вторых: позже собираюсь ответить и на вопрос: «зачем это надо?».

Сейчас начнем с простого. С установления взаимосвязи между игрой и программой-игроком (ботом). В качестве подопытного кролика берется широкоизвестная игра Zuma.

Всякое взаимодействие складывается из двух процессов: отправки данных «им» и получения данных от «них». В Zuma всё управление делается мышой, а обратную связь игра выдает с помощью изображения. Соответственно, перво-наперво необходимо научиться программно эмулировать поведение мыши и получать изображение от игры.

Основная цель этой статьи: получить программу, которая самостоятельно раз за разом заходит в игровой процесс, там что-то делает, а при game over-е начинает всё заново. Далее этот каркас будет развиваться в направлении, чтобы бот всё дальше и всё дольше продержался в игре до game over-а.
Решаемые вспомогательные подзадачи: эмуляция мыши, перенаправление на виртуальную машину управления мышой, захват изображения.

Читать полностью »

Что нового в Direct3D 11.2 DirectX 11.2 вошедший в выпуск Windows 8.1 насчитывает ряд интересных и нужных нововведений. В этом посте будет проведен краткий обзор основных новинок, а так же рассмотрены некоторые сценарии применения. Несмотря на то что нововведений не так много, некоторые из них будут весьма кстати при разработке приложений для мобильных устройств, и приложений для Windows Store.
Читать полностью »

Только что на почту пришло письмо о том, что Unity3D 4 вышел в релиз.
image

Unity — кроссплатформенный инструмент для разработки 2D и 3D игр.
Новшества:

  • Новая система анимации Mecanim
  • Real-time тени для всех платформ
  • Поддержка DirectX 11
  • Системе частиц добавлен функционал коллизий с миром
  • Добавлено две новые платформы: Adobe Flash и Linux
  • Кроссплатформенные динамические шрифты

Официальная новость с детальным описанием изменений.
Читать полностью »

Как создать рендерер, который бы работал даже на компьютере вашей бабушки? Изначально перед нами стояла немного другая задача — создать unbiased рендер для всех моделей GPU: NVidia, ATI, Intel.
Хотя идея такого рендера для всех видеокарт витала в воздухе давно, до качественной реализации, тем более на Direct3D, дело не доходило. В своей работе мы пришли к весьма дикой связке и дальше расскажем, что нас к ней привело и как она работает.

renderbro resource combined
Читать полностью »

План снова немного поменялся, я решил поменять части 2 и 3 местами.

  1. Основы программирования 3D графики и отличия фиксированного и программируемого конвейеров
  2. Game loop, различные подходы к организации цикла рендера и обработки логики в играх
  3. Трансформации, проекции и передача параметров в шейдеры
  4. ???

Сначала я хотел ограничиться самым распространенным случаем, но наткнувшись на статью Koen Witters, решил что описание всех распространенных вариантов точно не будет лишним. Получился, скорее всего не перевод, а вольный пересказ, и примеры взяты в несколько измененном виде (в оригинале, как мне показалось, имена переменных и констант были совершенно неадекватными и только усложняли понимание).

Читать полностью »

Это перевод нового сообщения из блога Valve Linux.

Один из факторов приятной игры — это скорость её работы. В этом посте я расскажу о том, что мы узнали о производительности графики наших игр, работающих в Linux.
Любой разрабочик скажет, что производительность — очень запутанная вещь. Поэтому, для простоты повествования, мы сосредоточимся на следующей топовой конфигурации:

Читать полностью »

Пол года назад я искал себе видеокарту, на которой я смог бы заниматься 3d моделированием, и рендерингом на GPU. В связи с появлением на рынке большого числе рендеров на CUDA мне не терпелось приобрести видеокарту с поддержкой CUDA, а именно Nvidia.

Как некоторые уже знают, Nvidia выставляет на продажу видеокарты нескольких моделей Geforce, Quadro, Tesla, ION, Tegra. В этом коротком сравнении упустим ION и Tegra, т.к. предназначены для мобильных устройств и слабые по производительности.

Нам нужна мощь!
Nvidia для профессиональных 3D приложений

Nvidia power...

Читать полностью »

Предыдущая часть (0).

Я решил немного изменить план, и сразу же после описания теоретической части давать примеры кода.

Процесс отрисовки

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

Рассмотрим простейший пример: мы хотим нарисовать один треугольник. Для упрощения, я изобразил его на плоскости, не используя Z координату.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js