Как настроить DirectX SDK в Visual Basic 2012?

Я использую Visual Basic 2012. Я проверил много руководств в сети. Я сделал точно так же, как в учебниках, чтобы добавить ссылку на DirectX в Visual Basic. но когда я запускаю свою программу, она иногда показывает ошибки, иногда зависает, иногда ничего не показывает и компилируется.
Я думаю, что в учебниках они используют другую версию Visual Basic, но как мне добавить ссылку на DirectX в Visual Basic, чтобы он работал нормально? данный код должен работать нормально, потому что он точно такой же, как в учебнике. Я использую визуал бейсик 2012.

Imports Microsoft.DirectX

Imports Microsoft.DirectX.Direct3D

Imports Microsoft.DirectX.DirectInput


Public Class Form1

    Dim runonce As Boolean = True
    Dim gamerun As Boolean = True
    Dim bkgcolor As Color = Color.Black
    Dim d3dev As Direct3D.Device
    Dim d3dpp As New PresentParameters ' = New PresentParameters
    Dim drawfont As Direct3D.Font
    Dim x As Int32
    Dim wait As Int32

    Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
        gamerun = False
    End Sub

    Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
        If (e.KeyCode = Keys.Escape) Then
            gamerun = False
            Me.Close()
        End If
    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
        Dim pos As Point
        pos.X = 0
        pos.Y = 0
        Me.Location = pos
        Me.Height = 600
        Me.Width = 800
        Me.Show()
    End Sub

    Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
        If runonce Then
            Me.Show()
            runonce = False
            init()
            run()
        End If
    End Sub
    Private Sub init()
        d3dpp.DeviceWindow = Me
        d3dpp.BackBufferCount = 1
        d3dpp.BackBufferFormat = Format.X8R8G8B8
        d3dpp.BackBufferHeight = Me.Height
        d3dpp.BackBufferWidth = Me.Width
        d3dpp.SwapEffect = SwapEffect.Discard
        d3dpp.PresentationInterval = PresentInterval.Immediate
        d3dpp.Windowed = True
        d3dpp.EnableAutoDepthStencil = True
        d3dpp.AutoDepthStencilFormat = DepthFormat.D24S8
        d3dev = New Direct3D.Device(0, Direct3D.DeviceType.Hardware, Me, CreateFlags.HardwareVertexProcessing, d3dpp)
        drawfont = New Direct3D.Font(d3dev, New System.Drawing.Font("IMPACT", 32, FontStyle.Regular, GraphicsUnit.Pixel))
        x = 25
        wait = 0
    End Sub
    Private Sub run()
        Do While gamerun
            d3dev.Clear(ClearFlags.Target, Color.Black, 1, 0)
            d3dev.BeginScene()
            drawfont.DrawText(Nothing, "TEST", x, 50, Color.DarkCyan)
            d3dev.EndScene()
            d3dev.Present()
            Windows.Forms.Application.DoEvents()
        Loop
    End Sub
End Class

person Rock You    schedule 14.08.2014    source источник


Ответы (1)


Единственная поддержка DirectX SDK для Visual Basic .NET — это устаревшие сборки Managed DirectX 1.1. Они не обновлялись очень давно, и, поскольку они основаны на .NET 1.1, они не будут работать с .NET 4.0 или .NET 4.5. Они работают только с .NET 2.0/3.x. VB 2012 использует .NET 4.5.

Вам следует рассмотреть альтернативу, такую ​​как SlimDX или SharpDX.

См. раздел DirectX и .NET. .

person Chuck Walbourn    schedule 14.08.2014