Туториал №1. Создание устройства Direct3D.
1. Создайте пустой проект VB.NET (
Empty Project)
2. В окне
Solution Explorer выберите пункт
References, и в меню, вызываемом щелчком правой кнопки на этом пункте выберите
Add Reference...
3. В открывшемся окне выбелите вкладку
.NET и добавьте в проект ссылки на следующие библиотеки классов:
- System.dll
- System.Drawing.dll
- System.Windows.Forms.dll
- Microsoft.DirectX.dll
- Microsoft.DirectX.Direct3D.dll
Нажмите OK
4. Далее необходимо добавить в проект файл класса, для этого в меню
Project выберите пункт
Add New Item... и добавьте файл класса (
Class) с названием
CreateDevice.vb
5. Откройте добавленный файл для редактирования и вставьте следующий код:
'-----------------------------------------------------------------------------
' Файл: CreateDevice.vb
'
' Описание: Это первый туториал по использованию Direct3D. В в этом туториале,
' все что мы сделаем это создадим устройство Direct3D и используем
' его для очистки окна.
'
' Copyright (c) Microsoft Corporation. Все права защищены.
'-----------------------------------------------------------------------------
Imports System
Imports System.Drawing
Imports System.Windows.Forms
Imports Microsoft.DirectX
Imports Microsoft.DirectX.Direct3D
Public Class CreateDevice
Inherits Form ' Наследуем класс формы
' Наши глобальные переменные для этого проекта
Private device As device = Nothing ' Наше устройство рендеринга
Public Sub New()
' Устанавливаем начальный размер нашей формы
Me.ClientSize = New System.Drawing.Size(400, 300)
' и её название
Me.Text = "D3D Tutorial 01: Создание устройства"
End Sub
Public Function InitializeGraphics() As Boolean
Try
' Здесь давайте проинициализируем D3D устройство
Dim presentParams As New PresentParameters
presentParams.Windowed = True
presentParams.SwapEffect = SwapEffect.Discard
device = New Device(0, DeviceType.Hardware, Me, _
CreateFlags.SoftwareVertexProcessing, presentParams)
Return True
Catch e As DirectXException
Return False
End Try
End Function
Private Sub Render()
If device Is Nothing Then
Return
End If
'Очистка заднего буфера синим цветом
device.Clear(ClearFlags.Target, System.Drawing.Color.Blue, 1.0F, 0)
device.BeginScene() 'Начало сцены
' Визуализация объектов сцены должна выполняться здесь
device.EndScene() 'Конец сцены
device.Present() 'Смена буферов (переднего и заднего)
End Sub
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
Me.Render() ' Визуализация сцены при событии Paint
End Sub
Protected Overrides Sub OnKeyPress(ByVal e As System.Windows.Forms.KeyPressEventArgs)
If Asc(e.KeyChar) = CInt(System.Windows.Forms.Keys.Escape) Then
Me.Close() ' Обработка клавиши Esc
End If
End Sub
'<summary>
'Главная точка входа в приложение
'</summary>
Shared Sub Main()
Dim frm As New CreateDevice 'Создание экземпляга класса нашей формы
If Not frm.InitializeGraphics() Then ' Инициализация Direct3D
MessageBox.Show("Невозможно инициализировать Direct3D. Программа будет закрыта.")
Return
End If
frm.Show() 'Отображение нашей формы на экране
'Главнцй цикл
While frm.Created
frm.Render()
Application.DoEvents()
End While
End Sub
End Class
Можете запускать.
Результатом работы программы будет выводится форма, вся область которой будет очищаться синим цветом с помощью устройства Direct3D.
Краткое описание кода:
В коде создается новый класс
CreateDevice, который является наследником класса
System.Windows.Forms.Form. При запуске приложения выполняется процедура
Sub Main(), которая является главной точкой входа в приложение. В ней происходит создание экземпляра класса
CreateDevice, т.е. создание формы. В функции
InitializeGraphics() происходит инициализация устройства
Direct3D, которое одним из параметров получает ссылку на нашу форму (
Me). Далее выполняется отображение формы на экране. И наконец, приложение переходит в главный цикл, условием завершения которого является уничтожение нашей формы. Вот и все.
Скомпилированный проект с исходником прикреплен ниже.