Показать сообщение отдельно
Старый 19.03.2006, 16:29   #2
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Туториал №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). Далее выполняется отображение формы на экране. И наконец, приложение переходит в главный цикл, условием завершения которого является уничтожение нашей формы. Вот и все.

Скомпилированный проект с исходником прикреплен ниже.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
Лit}{Ъ (02.05.2011), Nex (29.05.2009)