Darkhell
Erfahrenes Mitglied
Hi,
ich versuche mir nun Directx in Verbindung mit VB aneignen möchte, habe ich eine Frage.
Wie bekomme ich einen feinen fpsreichen Loop hin. Mit einem Timer wäre ich da schlecht bedient, denke ich.
ich arbeite mit diesem CODE:
Nun noch eine Frage:
Ich habe mal etwas im Netz gestöbert und folgende 3 Bücher gefunden:
http://vb-fun.de/vb/books/book0192.shtml
und
http://vb-fun.de/vb/books/book0002.shtml
und
http://vb-fun.de/vb/books/book0026.shtml
Ich wäre auch bereit in C++ umzusteigen, was ich sowieso schon immer wollte, wenn nicht dieses doofe Visual c++ 2005 gewesen wär...(iosrtream.h-Problem)
Dnake im Vorraus
ich versuche mir nun Directx in Verbindung mit VB aneignen möchte, habe ich eine Frage.
Wie bekomme ich einen feinen fpsreichen Loop hin. Mit einem Timer wäre ich da schlecht bedient, denke ich.
ich arbeite mit diesem CODE:
PHP:
Private Sub Main()
Dim Dx As DirectX7 ' DirectX Objekt deklarieren
Dim DDraw As DirectDraw7 ' DirectDraw Objekt deklarieren
Dim ddsPrimary As DirectDrawSurface7 ' Primär Surface
Dim ddsBackbuffer As DirectDrawSurface7 ' Backbuffer Surface
Dim ddsdPrimary As DDSURFACEDESC2 'Beschreibung für das Primär Surface
Dim ddsdBackbuffer As DDSURFACEDESC2 'Beschreibung für das Backbuffer Surface
Dim BackRECT As RECT 'RECT für den Backbuffer (wird von manchen Methoden benötigt)
Dim Caps As DDSCAPS2 'wird zum erstellen des Primary Surface benötigt
Set Dx = New DirectX7 ' Neus DirectX7 Objekt
Set DDraw = Dx.DirectDrawCreate("") '‚ es wird eine Instanz von DirectDraw angefertigt
' das CooperativeLevel wird eingestellt
DDraw.SetCooperativeLevel frmMain.hWnd, DDSCL_FULLSCREEN Or DDSCL_ALLOWMODEX Or DDSCL_EXCLUSIVE
'die Auflösung und Farbtiefe des Bildschirmes wird eingestellt
DDraw.SetDisplayMode 640, 480, 16, 0, DDSDM_DEFAULT '16bit = ca. 65000 Farben
'Dimensionen des RECT für den Backbuffer einstellen
BackRECT.Right = 640 'bis 640 Pixel nach rechts (X-Koordinate)
BackRECT.Bottom = 480 'bis 480 Pixel nach unten (Y-Koordinate)
' die Beschreibung des Surfaces wird festgelegt
ddsdPrimary.lFlags = DDSD_CAPS Or DDSD_BACKBUFFERCOUNT
' der Videospeicher (VRAM) wird für das Primarysurface und den Backbuffer verwendet
ddsdPrimary.ddsCaps.lCaps = DDSCAPS_PRIMARYSURFACE Or DDSCAPS_FLIP Or DDSCAPS_COMPLEX
' Es wird nur ein Backbuffer verwedet (mehrere sind möglich)
ddsdPrimary.lBackBufferCount = 1
' Das PrimayrySurface wird erstellt
Set ddsPrimary = DDraw.CreateSurface(ddsdPrimary)
' Beschreibung des Backbuffers
Caps.lCaps = DDSCAPS_BACKBUFFER
' "Hängt" den Backbuffer an das PrimarySurface an
Set ddsBackbuffer = ddsPrimary.GetAttachedSurface(Caps)
ddsBackbuffer.GetSurfaceDesc ddsdBackbuffer
ddsBackbuffer.DrawText 255, 255, "Hallo Welt", False
End Sub
Nun noch eine Frage:
Ich habe mal etwas im Netz gestöbert und folgende 3 Bücher gefunden:
http://vb-fun.de/vb/books/book0192.shtml
und
http://vb-fun.de/vb/books/book0002.shtml
und
http://vb-fun.de/vb/books/book0026.shtml
Ich wäre auch bereit in C++ umzusteigen, was ich sowieso schon immer wollte, wenn nicht dieses doofe Visual c++ 2005 gewesen wär...(iosrtream.h-Problem)
Dnake im Vorraus