Directx for managed code что это
Аннотация: Библиотека классов DirectX. Установка Microsoft ® DirectX ® 9.0 SDK Update (Summer 2003). Пространство имен Microsoft.DirectX.Direct3D. Создание устройства. Рисование плоского и трехмерного треугольника. Задание положения треугольника в мировых координатах. Создание перспективы. Добавление камеры. Отключение потребности в освещении сцены. Вращение треугольника вокруг координатной оси. Вращение треугольника вокруг произвольной оси. Обработка события изменения размеров окна. Создание освещения сцены. Хранение треугольника в вершинном буфере.
Файлы к лабораторной работе Вы можете скачать здесь.
Библиотека классов DirectX является расширением базовой библиотеки . NET Framework и представляет собой новую поддержку современной технологии программирования, разработанной корпорацией Microsoft. Сама технология основывается на трех положениях:
- Производители аппаратного обеспечения поддерживают технологию DirectX
- Операционная система Windows поддерживает технологию DirectX
- Пакет разработчика DirectX 9.0 SDK Update ( Summer 2003 ) от Microsoft содержит большой набор готовых интерфейсов, классов, функций, макросов , структур и констант, значительно упрощающих технологию разработки компьютерных игр для операционной системы Windows
DirectX 9.0 предоставляет возможность программисту разрабатывать приложения, осуществляющие работу со звуком, сетью, трехмерной графикой, видео и построен в виде набора компонентов. Все компоненты пакета DirectX распределены по пространствам имен
Using Sample Applications
Pre-tested code for sample applications can be found at:
(SDK root)\Samples\Managed\
For each DirectX technology you will find the following folder structure.
Getting Started with DirectX 9.0 for Managed Code
Download the DirectX 9.0 SDK from the DirectX Web site, or from MSDN DirectX Downloads . The SDK includes the set of DirectX DLLs that are required to run DirectX applications.
Note: Uninstall previous versions of DirectX before installing this release. Use the Add or Remove Programs Control Panel to remove an earlier version. Before they run, applications developed for managed code should confirm that DirectX 9.0 has been installed.
Установка Microsoft R DirectX R 9.0 SDK Update (Summer 2003)
- Вставте диск с пакетом DirectX и запустите программу Install .exe
- Выполните пункт Install DirectX 9.0 SDK
- Следуйте инструкциям мастера установки
Пакет установки возьмите у преподавателя или купите на рынке.
DirectX Redistribution
Stand-alone developer runtime installers install only the DirectX developer and debug runtime for redistribution purposes. These installers are located at:
(SDK root)\Developer Runtime\Managed DirectX\
DirectX 9.0 for Managed Code includes a full set of DLLs for redistribution. To install the full set, perform the following steps.
Подключение библиотек DirectX for Managed Code
Всем привет. У меня возникла проблема. Мне нужно воспроизвести видео средствами DirectX for.
Managed DirectX. Где его скачать? Скачал какой-то, как использовать не пойму.
Короче скачал DirectX SDK june 2010. Как добавить библиотеку в проект не знаю. "Добавить ссылку".
Подключение managed directx - Имя типа или пространства имен "DirectX" отсутствует в пространстве имен
Когда пишу using Microsoft.directx; выдаёт ошыбку Имя типа или пространства имен "DirectX".
Это кусок или весь класс?
Если весь, то попробуйте так:
все равно не помогает.
вот вся моя программа
Нельзя объявлять экземпляры Device в статическом классе.
А класс Program - статический.
Пиши свой класс (нестатический) и объявляй там.
Managed DirectX устарел я завтра постараюсь выложить книгу по XNA, сам начал читать, пока все супер так что не спеши .
Managed DirectX устарел я завтра постараюсь выложить книгу по XNA, сам начал читать, пока все супер так что не спеши .
мне бы просто график 3хмерный график ф-ции нарисовать . не хочется башку ломать над курением мануалов чтобы потом такую простую фигню нарисовать
Добавлено через 3 часа 56 минут 35 секунд
Нельзя объявлять экземпляры Device в статическом классе.
А класс Program - статический.
Пиши свой класс (нестатический) и объявляй там.
а что в качестве параметров передавать в этот класс?
Добавлено через 20 минут 31 секунду
ну вот кое-что наваял:
в классе MyGraphics будет отрисовываться и показываться на форме исходный график
по идее вроде так должно работать. но при компиляции возникли ошибки:
Ошибка 1 "Direct.Form1" не содержит определения для "Form1_Load" и не был найден метод расширения "Form1_Load", принимающий тип "Direct.Form1" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку)
Спасибо за ответы!
Предоставленный Microsoft набор XNA Framework сделал возможным создание крооссплатформенных игр для Windows и Xbox 360 начинающими разработчиками. XNA не просто новый каркас для приложений, но и наилучшая на сегодняшний день среда для создания игр. Вы сможете практически не затрачивая усилий создавать современные игры не прибегая к помощи сторонних языков программирования или утилит. Читая эту книгу вы убедитесь в истинности данного утверждения и увидите несколько игр, подтверждающих ее. Без XNA я никогда бы не смог создать такую великолепную игру, как Racing Game за такое короткое время.
Формат: doc
Размер: 4,4
во время отладки приложения возникла ошибка:
Обнаружено событие LoaderLock
Message: Библиотека "C:\WINDOWS\assembly\GAC\Microsoft.DirectX\1.0.2902.0__31bf3 856ad364e35\Microsoft.DirectX.dll" пытается выполнить управляемый код под блокировкой OS Loader. Запуск управляемого кода в пределах функции DllMain или функции инициализации образа может вызвать зависание приложения.
Debugging DirectX Applications
- Within the Solution Explorer pane, right-click your project (not the solution) and select Properties.
- Click the Configuration Properties folder at the left, then click the Debugging selection.
- Within the Debuggers options, set Enable Unmanaged Debugging to True. It is set to False by default.
From within managed code, you can also view detailed documentation and syntax by clicking anywhere on the name of a class, structure, member, property, or field and then pressing F1.
Class Inheritance
DirectX 9.0 for Managed Code does not support class inheritance in applications. Inheriting from DirectX 9.0 for Managed Code classes is not recommended and the resulting behavior is undefined.
Although you may discover that certain inherited classes work with this version of DirectX 9.0 for Managed Code, such inheritance may not work in future versions.
Создание заготовки приложения
Далее мы будем создавать приложение на основе управляемого DirectX ( Managed DirectX ).
Предметная область
Задача – получить данные от игрового руля. В первую очередь необходимо изучить предметную область. Где используются игровые рули? Очевидно, в играх. Множество игр разрабатывается с помощью технологии DirectX. Почитав википедию, можно узнать, что DirectX подразделяется на множество интерфейсов. Интерес для нас представляет интерфейс DirectInput.
Используемые игровые контроллеры
Для реализации проекта в мое распоряжение был предоставлен игровой руль Defender Forsage GTR.
Также я не упустил возможности поэкспериментировать со своим игровым джойстиком Logitech Rumblepad 2.
Managed DirectX
Необходимые инструменты
Начало работы
Добавим к проекту новый файл app.config со следующим содержимым:
Теперь все готово, можно начинать работать с игровыми контроллерами.
Получение состояния игрового руля
Очевидно, что первым делом необходимо узнать обо всех подключенных игровых контроллерах:
Далее необходимо инициализировать игровое устройство. Для наглядности подразумеваю, что оно у меня одно:
В характеристиках руля сказано, что угол поворота рулевого колеса составляет 180 градусов, поэтому в InputRange я указал значение угла отклонения влево и вправо в 90 градусов.
К сожалению, мы не сможем подписаться на какие-либо события от руля или джойстика вроде KeyDown\KeyUp, и состояние игрового контроллера придется опрашивать вручную:
Для наглядности можно вывести на экран структуру JoystickState и увидеть, какие поля меняются в зависимости от состояния игрового руля. Все это справедливо также и для джойстика.
Выводы
Оказывается, запрограммировать игровой контроллер под свои нужды не так уж и сложно, большинство всевозможных джойстиков\рулей и т.п. подчиняются интерфейсу DirectInput, теперь в свои проекты\игры вы с легкостью сможете добавить их поддержку. Что касается игр, то остается только реализовать функционал, дающий пользователю возможность самому «навешивать» на кнопки действия, предусмотренные логикой игры.
Понимание процессов происходящих «под капотом» DirectX всегда было сопряжено с некоторыми трудностями и вынуждало применять дополнительные инструменты, например такие как Pix. Но прогресс не стоит на месте, многие идеи и готовые решения теперь внедрены в Visual Studio 11 beta. Этот инструментарий позволяет значительно упростить отладку DirectX приложений и дать программисту возможность детально разобраться в тех процессах, которые формируют изображение. Теперь каждый пиксель может быть досконально изучен, и получена вся история его жизни.
Новый режим отладки
В меню отладки Visual Studio 11 beta появился новый пункт – «Debug/Graphics», и в рамках этой статьи я поясню назначение каждого пункта.
Начинается все с пункта «Start Diagnostics». Это специальный режим запуска вашего DirectX приложения, при котором система отладки позволяет вам делать «снимки» текущих фреймов. Как вы видите, в углу приложения виден оверлей в котором отображается текущее количество отрендеренных фреймов, время от начала запуска приложения, а так же занимаемый снимками объем памяти.
Нажатие на кнопку «Print Screen» формирует полный дамп состояния фрейма, в который входит сформированное изображение а так же очень много дополнительной информации, которая в дальнейшем позволяет понять, какие процессы привели к тому что мы видим на экране, а так же какие ресурсы для этого потребовались.
Вызов пункта меню «Debug/Graphics/Object Table» поможет разобраться, какие ресурсы на текущий момент формирования этого экрана были задействованы, какой объем памяти они занимают, когда были созданы (в каком фрейме), их разрешение и многую другую информацию. Естественно ресурсы это не только текстуры но и шейдеры, всевозможные буферы, состояния и представления. Эта информация позволит в дальнейшем предпринимать шаги по оптимизации. Например для возможности запуска вашего приложения на более слабом оборудовании.
Больше деталей
Более детально разобраться в том, что же происходило в момент формирования изображения, позволяет пункт меню «Debug/Graphics/Pixel History». Для того чтобы увидеть историю формирования того или иного пикселя, его надо указать перекрестием. В панели «Graphics Pixel History» будет представлена вся история его создания.
- Бэкграунда
- Задней части земного шара
- Передней части земного шара с учетом прозрачности
- Отрисовка лучей идущих по меридианам
Каждый метод Draw в свою очередь взаимодействует с конвейером графической подсистемы, и благодаря пункту меню «Debug/Graphics/Pipeline Stages» можно увидеть детали этого взаимодействия.
Каждый из четырех шагов конвейера может быть проверен на фазах
- Приема исходной геометрии.
- Геометрических преобразований вертексными шейдерами, обычно для того чтобы задать пропорции и повороты объекта на экране, направление камеры.
- Обработку геометрии пиксельными шейдерами, фактически раскраску на основе какой либо модели освещения и текстур.
- Окончательное формирование изображения с совмещением например предыдущих шагов рендера.
Возвращаемся к коду
Из панели «Graphics Pixel History» так же легко добраться до того кода который исполняется нашим приложением на каждом шаге. Для этого достаточно воспользоваться пунктом меню «Debug/Graphics/Event Call Stack» и выбрать исходный файл который был виновником этого вызова, после чего исходный файл будет позиционирован на строку сделавшую вызов.
Точно таким же образом, развернув интересующий нас вызов Draw можно получить исходный код шейдера который обрабатывал этот вызов в конвейере. Не забываем что вся текущая диагностика сейчас перед нами для совершенно конкретного пикселя, и мы даже можем при желании получить значения переменной innerColour для этого фрейма. Для тех кто недостаточно знаком с DirectX поясню некоторые детали. Тот код который представлен на экране является микропрограммой на языке HLSL которая после компиляции исполняется для каждого пикселя изображения графическим ускорителем. Эти микропрограммы могут иметь параметры, один из которых и выделен синим цветом.
Полное состояние подсистем DirectX на момент вызова Draw для нашего пикселя можно получить в виде отчёта, щелкнув по вызовы в панели «Graphics Pixel History». Отчёт очень объёмен.
Отыскав в отчёте информацию о состоянии пиксельного шейдера, можно получить данные о буфере констант который используется для параметризации.
Щёлкнув по ссылке obj:35 можно увидеть состояние этого буфера. Значения первых четырёх ячеек которого являются цветом (R, G, B, Alpha) входного параметра innerColour.
Но и это конечно не все. В дальнейшем возможно добраться до исходного кода программы, который формировал эти значения (0.3 0.3 0.3 1.0). Для этого можно воспользоваться пунктом меню «Debug/Graphics/Event List». Выбрав в панели «Graphics Pixel History» интересующий нас вызов Draw, в панели «Graphics Event List» получаем полный перечень вызовов DirectX API и отыскиваем метод обновления параметров шейдера – UpdateSubResource. Наводкой на то что это именно тот метод который нас интересует так же является отсылка к obj:35. И далее воспользовавшись панелью «Graphics Call Stack» оказываемся в конкретном месте нашей программы где осуществился этот вызов.
Теперь достаточно воспользоваться привычным пунктом меню «Find All References» чтобы обнаружить строку с заданием тех самых параметров которые нас интересовали.
Отладка шейдеров
Отладка шейдеров HLSL так же не является чем-то экстраординарным для Visual Studio 11 beta. Для этого достаточно включить режим создания отладочной информации для исходного файла шейдера.
Осталось только расставить точки прерываний в привычном для Visual Studio режиме и с теми же возможностями (например Condition break points). При вызове функции шейдера содержащей точку останова произойдет прерывание и появится возможность изучить текущие значения переменных.
Заключение
Как уже стало понятно из статьи, отладка DirectX приложений может быть значительно упрощена благодаря инструментам, вошедшим в Visual Studio 11 beta.
This topic discusses the basics of how to install and use Microsoft DirectX 9.0 for Managed Code and documentation. The following sections are included.
Установка Microsoft R DirectX R 9.0 SDK Update (Summer 2003)
- Вставте диск с пакетом DirectX и запустите программу Install .exe
- Выполните пункт Install DirectX 9.0 SDK
- Следуйте инструкциям мастера установки
Пакет установки возьмите у преподавателя или купите на рынке.
Using DirectX Help Documentation
- In Control Panel, click the Add/Remove Programs icon.
- Highlight Microsoft DirectX 9.0 SDK and then click Change.
- When the InstallShield Wizard opens, click Next.
- Select Modify. Click Next.
- In the DirectX Documentation list, click This feature will not be available.
- Click Next and the documentation will be removed.
Читайте также:
- Почему видеорегистратор не записывает видео на карту памяти
- Override dns что это
- Сколько часов можно работать на компьютере в день
- Для того чтобы узнать данные используемые для идентификации компьютера в сети необходимо
- Что делать если не запускается sony vegas pro 13 инициализация пользовательского интерфейса