Hvordan bruke DirectX i VB

DirectX er en av de ledende grafikk programmering APIer som brukes til spill, simuleringer og andre grafiske applikasjoner som medisinsk bildebehandling. Det er en Windows-only biblioteket tilgjengelig for bruk i C ++, samt enhver .NET rammeverket språk som C # eller VB.net. Den eneste skritt for å begynne å utnytte den fulle kraften til en av de ledende grafikk-APIer i verden er å legge til et bibliotek referanse til din .net prosjektet.

Bruksanvisning

1 Høyreklikk på prosjektnavnet i navigasjonspanelet, og klikk "Add Reference." Legg prosjektreferanser til Microsoft.DirectX.dll og Microsoft.DirectX.DirectDraw.dll.

2 Kopier og lim følgende inn i toppen av Main.vb filen:

importen Microsoft.DirectX
importen Microsoft.DirectX.DirectDraw

3 På toppen av kontrolleren objektet, lim følgende variabeldeklarasjoner:

Privat visning Som Device
Private foran Som Surface = Nothing
Private tilbake Som Surface = Nothing
Private tittelen som Surface = Nothing
Private tekst Som Surface = Nothing
Private klipp Som Clipper = Nothing
Private titlescreen As String = Application.StartupPath + \ "\ title.bmp \"

4 Lim inn følgende kode inn i klassen under konstruktør:

Private Sub InitDirectDraw ()
"Brukes til å beskrive en Surface

Dim beskrivelse som ny SurfaceDescription ()
'Init Enhets

display = New Device ()
#if DEBUG Deretter
display.SetCooperativeLevel (Me, CooperativeLevelFlags.Normal)
#Ellers
'Sett Cooperative nivå og forelder,

'Setted til Full Screen Exclusive til skjemaet)

display.SetCooperativeLevel (Me, CooperativeLevelFlags.FullscreenExclusive)
'Sett oppløsningen og fargedybden

'Brukes i full skjerm (640x480, 16 bit farge)

display.SetDisplayMode (640, 480, 16, 0, False)
#Slutt om

'Definer attributter for front Surface

description.SurfaceCaps.PrimarySurface = True

#if DEBUG Deretter
foran = Ny Surface (beskrivelse, display)
#Ellers
description.SurfaceCaps.Flip = True
description.SurfaceCaps.Complex = True

'Sett Back Buffer teller

description.BackBufferCount = 1

'Opprett overflaten med specifed beskrivelse og enhet)

foran = Ny Surface (beskrivelse, display)
#Slutt om
description.Clear ()
#if DEBUG Deretter
description.Width = front.SurfaceDescription.Width
description.Height = front.SurfaceDescription.Height
description.SurfaceCaps.OffScreenPlain = True
tilbake = Ny Surface (beskrivelse, display)
#Ellers
'A Caps er et sett med attributter som brukes av de fleste av DirectX komponenter

Dim caps som ny SurfaceCaps ()
"Ja, vi bruker en tilbake buffer

caps.BackBuffer = True

«Knytt foran buffer til å sikkerhetsbuffer med spesifiserte caps

tilbake = front.GetAttachedSurface (caps)
#Slutt om

Opprett Clipper

klipp = Ny Clipper (display)
'' 'Sett regionen til dette skjemaet

clip.Window = Me
'Sett klipperen for front Surface

front.Clipper = klipp

'Tilbake beskrivelsen

description.Clear ()
Opprett tittelen skjermen

title = Ny Surface (titlescreen, beskrivelse, display)

description.Clear ()
"Still inn høyden og bredden på teksten.

description.Width = 600
description.Height = 16
'OffScreenPlain betyr at denne Surface

'Er ikke en front, rygg, alfa Surface.

description.SurfaceCaps.OffScreenPlain = True

Opprett teksten Surface

text = New Surface (beskrivelse, display)
'Sett back farge

text.ColorFill (Color.Black)
"Sett i forgrunnen fargen på teksten

text.ForeColor = Color.White
"Tegn Tekst til overflaten for å coords (0,0)

text.DrawText (0, 0, \ "Managned DirectX Tutorial 1 - Trykk Enter eller Esc for å avslutte \", sann)
End Sub
Private Sub Draw ()
«Hvis front ikke opprette, ignorere denne funksjonen

Hvis foran Er Ingenting Deretter
Komme tilbake
Slutt om

«Hvis minimeres form, ignorere denne funksjonen

Hvis Me.WindowState = FormWindowState.Minimized Deretter
Komme tilbake
Slutt om
Prøve
"Tegn tittelen til baksiden buffer ved hjelp kilde kopi blit

back.DrawFast (0, 0, tittel, DrawFastFlags.Wait)

«Tegn teksten også til baksiden buffer ved hjelp kilde kopi blit

back.DrawFast (10, 10, tekst, DrawFastFlags.Wait)

#if DEBUG Deretter
«Tegn alt dette til front

front.Draw (tilbake, DrawFlags.Wait)
#Ellers
"Gjør en flip å overføre tilbake buffer til fronten, raskere

#Slutt om
front.Flip (tilbake, FlipFlags.Wait)

Catch generatedExceptionName Som WasStillDrawingException
Komme tilbake
Catch generatedExceptionName Som SurfaceLostException
«Hvis vi mistet overflatene, gjenopprette overflater

RestoreSurfaces ()
End Try
End Sub

Private Sub RestoreSurfaces ()
"Brukes til å beskrive en Surface

Dim beskrivelse som ny SurfaceDescription ()

'Gjenopprett al overflaten associed med enheten

display.RestoreAllSurfaces ()
"Tegne tekst

text.ColorFill (Color.Black)
text.DrawText (0, 0, \ "Managned DirectX Tutorial 1 - Trykk Enter eller Esc for å avslutte \", sann)

«For tittelskjermen, må vi

«Kast det først og deretter gjenskape det

title.Dispose ()
title = Nothing
title = Ny Surface (titlescreen, beskrivelse, display)
Komme tilbake
End Sub

5 Kopier og lim inn følgende kode inn i klassen konstruktør:

InitializeComponent ()
InitDirectDraw ()
Me.Cursor.Dispose ()
Me.Show ()
mens Laget
Tegne()
Application.DoEvents ()
slutt Mens

6 Trykk "F5" for å kjøre programmet og se title.bmp som vises på skjermen.

Hint

  • Den åpen kildekode, er cross-platform alternativ til DirectX kalt OpenGL.