Введение в DirectX
Файлы к лабораторной работе Вы можете скачать  здесь.
здесь.
Библиотека классов DirectX является расширением базовой библиотеки .NET Framework и представляет собой новую поддержку современной технологии программирования, разработанной корпорацией Microsoft. Сама технология основывается на трех положениях:
- Производители аппаратного обеспечения поддерживают технологию DirectX
- Операционная система Windows поддерживает технологию DirectX
- Пакет разработчика DirectX 9.0 SDK Update ( Summer 2003 ) от Microsoft содержит большой набор готовых интерфейсов, классов, функций, макросов, структур и констант, значительно упрощающих технологию разработки компьютерных игр для операционной системы Windows
DirectX 9.0 предоставляет возможность программисту разрабатывать приложения, осуществляющие работу со звуком, сетью, трехмерной графикой, видео и построен в виде набора компонентов. Все компоненты пакета DirectX распределены по пространствам имен
Установка Microsoft R DirectX R 9.0 SDK Update (Summer 2003)
Устанавливаемый пакет является расширением среды разработчика (IDE) Visual Studio .NET 2005, поэтому прежде всего на вашем компьютере должна быть эта среда.
- 
 Вставте
      диск с пакетом DirectX  и запустите программу Install.exe Вставте
      диск с пакетом DirectX  и запустите программу Install.exe
- 
 Выполните
    пункт Install DirectX 9.0 SDK Выполните
    пункт Install DirectX 9.0 SDK
- 
 Следуйте
    инструкциям мастера установки Следуйте
    инструкциям мастера установки
Пакет установки возьмите у преподавателя или купите на рынке.
Создание заготовки приложения
Далее мы будем создавать приложение на основе управляемого DirectX ( Managed DirectX ).
- 
 Выберите
      папку размещения файлов проекта и создайте проект C#  с
      именем SimpleMedia Выберите
      папку размещения файлов проекта и создайте проект C#  с
      именем SimpleMedia
- 
 Удалите
      ссылки на ненужные нам на данном этапе библиотеки Удалите
      ссылки на ненужные нам на данном этапе библиотеки
- 
 Используя
      меню Project, выполните команду Add
      Reference  и добавьте
      к проекту нужные нам ссылки на сборки пакета DirectX Используя
      меню Project, выполните команду Add
      Reference  и добавьте
      к проекту нужные нам ссылки на сборки пакета DirectX
- 
 Откройте
      файл Form1.cs в режиме View Code,
      добавьте в начало файла ссылки на пространства имен только
      что добавленных библиотек и закомментируйте ссылки на System.Data  и System.Text Откройте
      файл Form1.cs в режиме View Code,
      добавьте в начало файла ссылки на пространства имен только
      что добавленных библиотек и закомментируйте ссылки на System.Data  и System.Text
//using System.Data;
//using System.Text;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using Microsoft.DirectX;
using Microsoft.DirectX.Direct3D;
    
namespace SimpleMedia
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    }
}
                            Листинг
                        10.1.
                    Добавление ссылок на пространства имен в файл Form1.cs
Последний пункт действий является необязательным, но позволяет не классифицировать каждый раз объекты перед их использованием полными именами с префиксами пространств имен.
Пространство имен Microsoft.DirectX.Direct3D
Для рисования графики на форме мы будем использовать компоненты, расположенные в пространстве имен Microsoft.DirectX.Direct3D
Непосредственное выполнение всех графических операций осуществляется классом Device (устройство). Условно можно представить, что для программиста этот класс аналогичен графическому устройству и графической карте, установленной на компьютере.
Существуют три перегруженных версии конструктора класса устройства Microsoft.DirectX.Direct3D.Device
- public Device ( System.IntPtr lp )
- public Device ( System.Int32 adapter, Microsoft.DirectX.Direct3D.DeviceType deviceType, System.Windows.Forms.Control renderWindow, Microsoft.DirectX.Direct3D.CreateFlags behaviorFlags, Microsoft.DirectX.Direct3D.PresentParameters presentationParameters )
- public Device ( System.Int32 adapter , Microsoft.DirectX.Direct3D.DeviceType deviceType , System.IntPtr renderWindowHandle , Microsoft.DirectX.Direct3D.CreateFlags behaviorFlags , Microsoft.DirectX.Direct3D.PresentParameters presentationParameters )
Пока мы будем использовать только вторую версию конструктора. Рассмотрим параметры этого конструктора:
- adapter - относится к тому физическому устройству, которое мы хотим классифицировать. Каждое устройство в компьютере имеет идентификатор адаптера (от 0 до числа, на единицу меньшего, чем число имеющихся устройств). Нулевое значение для параметра adapter подразумевает установку устройства по умолчанию.
- 
deviceType  (тип устройства)
      - сообщает приложению, какой тип устройства мы хотим создать.
      Значением этого параметра является одно из полей структуры Microsoft.DirectX.Direct3D.DeviceType- Microsoft.DirectX.Direct3D.DeviceType.Hardware
- Microsoft.DirectX.Direct3D.DeviceType.Reference
- Microsoft.DirectX.Direct3D.DeviceType.Software
 
- renderWindow связывает окно с созданным устройством, назначая его в качестве окна рендеринга (выдачи результата). Для этого параметра можно использовать форму, панель или любой другой производный от класса Control класс. На данном этапе мы будем использовать только формы.
- 
behaviorFlags  (флажки
      режимов) - используется для управления режимами устройства
      после его создания. Может комбинироваться операцией поразрядного
      сложения "|",
      что позволяет установить множественные режимы работы устройства.
      Некоторые из этих флажков являются взаимоисключающими.
      Значения параметра определяются перечислением Microsoft.DirectX.Direct3D. CreateFlags:- Microsoft.DirectX.Direct3D.CreateFlags.AdapterGroupDevice
- Microsoft.DirectX.Direct3D.CreateFlags.DisableDriverManagement
- Microsoft.DirectX.Direct3D.CreateFlags.FpuPreserve
- Microsoft.DirectX.Direct3D.CreateFlags.HardwareVertexProcessing
- Microsoft.DirectX.Direct3D.CreateFlags.MixedVertexProcessing
- Microsoft.DirectX.Direct3D.CreateFlags.MultiThreaded
- Microsoft.DirectX.Direct3D.CreateFlags.PureDevice
- Microsoft.DirectX.Direct3D.CreateFlags.SoftwareVertexProcessing
 
- 
presentationParameters  -
      управляет представлением данных на экране. Посредством
      этого параметра можно управлять любыми параметрами
      отображаемых данных. Параметр представляет собой экземпляр
      класса Microsoft.DirectX.Direct3D.PresentParameters, имеющего,
      в частности, свойства- Microsoft.DirectX.Direct3D.PresentParameters.Windowed - является логической переменной, определяющей, работает ли устройство в полноэкранном режиме (значение false ) или в оконном режиме (значение true )
- 
Microsoft.DirectX.Direct3D.PresentParameters.SwapEffect  -
          используется для описания режима буферной подкачки- SwapEffect.Discard - сбрасывает содержимое буфера, если он не готов к представлению
- SwapEffect.Copy - сходно со значением Flip, но требует от программиста установки значения 1 для числа вторичных буферов
- SwapEffect.Flip - будет создан вторичный буфер и произойдет копирование в него из первичного буфера независимо от состояния последнего
 
 
 
                             


