Метка «DirectX»

Введение

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, решил что описание всех распространенных вариантов точно не будет лишним. Получился, скорее всего не перевод, а вольный пересказ, и примеры взяты в несколько измененном виде (в оригинале, как мне показалось, имена переменных и констант были совершенно неадекватными и только усложняли понимание).

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

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

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

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

Nvidia power...

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

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

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

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

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

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

Этой статьей начинаю серию уроков по программированию 3D графики с использованием Direct3D 11 в среде .NET.

В этой части (пусть это будет часть 0) предыстория. План на следующие части такой:

  1. Теория: фундаментальные понятия и термины в 3D графике
  2. Теория: Game loop, различные подходы к организации цикла рендера и обработки логики в играх
  3. Практика: «Hello world» в мире 3D-графики или разноцветный вращающийся кубик на DirectX 11
  4. Практика: пишем плагин для импорта из 3dsmax
  5. ???

Статьи рассчитаны на подготовленного программиста, знакомого с платформой .NET в общем и языком C# в частности. Объяснения будут даваться только по специфичным для 3D графики концепциям.

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

Отладка DirectX — проще простогоПонимание процессов происходящих «под капотом» DirectX всегда было сопряжено с некоторыми трудностями и вынуждало применять дополнительные инструменты, например такие как Pix. Но прогресс не стоит на месте, многие идеи и готовые решения теперь внедрены в Visual Studio 11 beta. Этот инструментарий позволяет значительно упростить отладку DirectX приложений и дать программисту возможность детально разобраться в тех процессах, которые формируют изображение. Теперь каждый пиксель может быть досконально изучен, и получена вся история его жизни.
Читать полностью »

Системное программирование / Создание прокси dll для запуска DirectDraw игр в окнеВ продолжение темы расширения функциональности готовых программ хотелось бы рассказать об ещё одном способе изменения логики работы уже скомпилированной программы, который не требует делать изменений в самом исполняемом файле. Это может пригодиться при распространении вашей модификации в США, где прямое вмешательство в исполняемый файл строго осуждается. Речь пойдёт о создании крошечной прокси-dll (всего ≈4 килобайта) для подмены используемой приложением библиотеки на примере ddraw.dll.

Приступим

Вся работа будет проводитьсяЧитать полностью »


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