Come usare DirectX in VB

July 23

DirectX è una delle grafiche più importanti di programmazione API utilizzate per i giochi, simulazioni e altre applicazioni grafiche come l'imaging medico. Si tratta di un Windows-only biblioteca a disposizione per l'uso in C ++, così come qualsiasi linguaggio framework .NET, come C # o VB.net. L'unico passo necessario per iniziare a sfruttare tutta la potenza di uno dei più importanti API grafiche in tutto il mondo è quello di aggiungere un riferimento di libreria al progetto NET.

istruzione

1 Fare clic con il nome del progetto nel pannello di navigazione, e fare clic su "Aggiungi riferimento". Aggiungere i riferimenti di progetto per Microsoft.DirectX.dll e Microsoft.DirectX.DirectDraw.dll.

2 Copia e incolla il seguente nella parte superiore del file Main.vb:

Le importazioni Microsoft.DirectX
Le importazioni Microsoft.DirectX.DirectDraw

3 Nella parte superiore del vostro oggetto di controllo, incollare le seguenti dichiarazioni di variabili:

Display privato come Dispositivo
fronte privato come superficie di = Nothing
Privato indietro come Surface = Nothing
titolo privato come superficie di = Nothing
testo privata come superficie di = Nothing
Private Clip Come Clipper = Nothing
titlescreen privato come stringa = Application.StartupPath + \ "\ title.bmp \"

4 Incollare il seguente codice nella classe sotto il costruttore:

Private Sub InitDirectDraw ()
'Usato per descrivere una superficie

Descrizione fioco come nuovo SurfaceDescription ()
'Init del dispositivo

Display = nuovo dispositivo ()
#if DEBUG Poi
display.SetCooperativeLevel (Me, CooperativeLevelFlags.Normal)
#Altro
'Impostare il livello di cooperativa e genitore,

'Impostato a schermo intero esclusiva alla forma)

display.SetCooperativeLevel (Me, CooperativeLevelFlags.FullscreenExclusive)
'Impostare la risoluzione e profondità di colore

'Utilizzato a schermo intero (640x480, 16 bit colore)

display.SetDisplayMode (640, 480, 16, 0, False)
#Finisci se

'Definire gli attributi per la superficie frontale

description.SurfaceCaps.PrimarySurface = True

#if DEBUG Poi
anteriore = nuova superficie (descrizione, display)
#Altro
description.SurfaceCaps.Flip = True
description.SurfaceCaps.Complex = True

'Imposta il conteggio Indietro Buffer

description.BackBufferCount = 1

'Creare la superficie con la descrizione specifed e dispositivo)

anteriore = nuova superficie (descrizione, display)
#Finisci se
description.Clear ()
#if DEBUG Poi
description.Width = front.SurfaceDescription.Width
description.Height = front.SurfaceDescription.Height
description.SurfaceCaps.OffScreenPlain = True
indietro = nuova superficie (descrizione, display)
#Altro
'A maiuscole è un insieme di attributi utilizzati dalla maggior parte dei componenti DirectX

tappi fioco come nuovo SurfaceCaps ()
'Sì, ​​stiamo usando un buffer indietro

caps.BackBuffer = True

'Associare il buffer anteriore a quella posteriore tampone con tappi specificati

indietro = front.GetAttachedSurface (caps)
#Finisci se

'Creare il Clipper

Clip = Nuovo Clipper (display)
'' 'Impostare la regione a questa forma

clip.Window = Me
'Imposta il tagliatore per la superficie anteriore

front.Clipper = Clip

'Reset la descrizione

description.Clear ()
'Creare la schermata del titolo

title = nuova superficie (titlescreen, descrizione, display)

description.Clear ()
'Impostare l'altezza e la larghezza del testo.

description.Width = 600
description.Height = 16
'OffScreenPlain significa che questo Surface

'Non è un anteriore, posteriore, alfa superficie.

description.SurfaceCaps.OffScreenPlain = True

'Creare la superficie di testo

text = nuova superficie (descrizione, display)
'Impostare il colore backgroup

text.ColorFill (Color.Black)
'Imposta il colore di primo piano del testo

text.ForeColor = Color.White
'Disegnare il testo alla superficie di coordinate (0,0)

text.DrawText (0, 0, \ "Managned DirectX Tutorial 1 - Premere Invio o Esc per uscire \", True)
End Sub
Draw Private Sub ()
'Se la parte anteriore non è creare, ignorare questa funzione

Se frontale è niente allora
Ritorno
Finisci se

'Se il modulo viene ridotto al minimo, ignorare questa funzione

Se Me.WindowState = FormWindowState.Minimized Poi
Ritorno
Finisci se
Provare
'Disegna il titolo al buffer posteriore utilizzando la copia sorgente blit

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

'Disegnare il testo anche al buffer posteriore utilizzando la copia sorgente blit

back.DrawFast (10, 10, il testo, DrawFastFlags.Wait)

#if DEBUG Poi
'Disegna tutto questo per il fronte

front.Draw (indietro, DrawFlags.Wait)
#Altro
'Facendo un salto mortale per trasferire di nuovo buffer per la parte anteriore, più veloce

#Finisci se
front.Flip (indietro, FlipFlags.Wait)

Cattura generatedExceptionName Come WasStillDrawingException
Ritorno
Cattura generatedExceptionName Come SurfaceLostException
'Se abbiamo perso le superfici, ripristinare le superfici

RestoreSurfaces ()
End Try
End Sub

RestoreSurfaces Private Sub ()
'Usato per descrivere una superficie

Descrizione fioco come nuovo SurfaceDescription ()

'Ripristinare la superficie al associed con il dispositivo

display.RestoreAllSurfaces ()
'Ridisegna il testo

text.ColorFill (Color.Black)
text.DrawText (0, 0, \ "Managned DirectX Tutorial 1 - Premere Invio o Esc per uscire \", True)

'Per la schermata del titolo, abbiamo bisogno di

'Disporre in primo luogo e poi ricrearlo

title.Dispose ()
title = Nothing
title = nuova superficie (titlescreen, descrizione, display)
Ritorno
End Sub

5 Copia e incolla il seguente codice nel costruttore di classi:

InitializeComponent ()
InitDirectDraw ()
Me.Cursor.Dispose ()
Me.Show ()
mentre Creato
Disegnare()
Application.DoEvents ()
End While

6 Premere il tasto "F5" per eseguire l'applicazione e vedere il title.bmp viene visualizzato sullo schermo.

Consigli e avvertenze

  • La open-source, cross-piattaforma alternativa per DirectX è chiamato OpenGL.