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.