【发布时间】: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