【问题标题】:How to setup directx sdk in visual basic 2012?如何在visual basic 2012中设置directx sdk?
【发布时间】:2014-08-14 08:06:08
【问题描述】:

我使用的是visual basic 2012。我在网上查了很多教程。我完全按照教程中的做法,在visual basic中添加了对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

【问题讨论】:

    标签: visual-studio-2012 reference directx basic


    【解决方案1】:

    DirectX SDK 对 Visual Basic .NET 的唯一支持是旧的托管 DirectX 1.1 程序集。这些已经很长时间没有更新了,因为它们基于 .NET 1.1,它们不能与 .NET 4.0 或 .NET 4.5 一起使用。它们仅适用于 .NET 2.0/3.x。 VB 2012 使用 .NET 4.5。

    您应该考虑查看类似 SlimDXSharpDX 的替代方案。

    DirectX and .NET

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-31
      • 1970-01-01
      • 2014-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多