DirectX-Forum - Beitragsübersicht -
ThemaDX9: DirectDraw mit DirectX 9 (Windowed Mode)
Von S. P. Gardebiter
Datum 06. Januar 2011 um 16:58:33
Frage Moin, ich habe da mal eine Frage, ich habe nämlich das Problem, dass ich für ein Formular keinen BackBuffer festlegen kann/darf.
Ich brauche aber einen damit ich kein hässliches Flimmern habe und das ganze schneller funktioniert, dann dachte ich mir, vielleicht kann ich ja den ganzen BackBuffer einfach auf den FrontBuffer kopieren.

Wenn ich jetzt aber ein zweites Surface createn möchte, funktioniert das ganze nicht, sondern ich bekomme folgende Fehlermeldung:
System.ArgumentException wurde nicht behandelt.
Message="Der Wert liegt außerhalb des erwarteten Bereichs."
Source="Microsoft.DirectX.DirectDraw"
Dies ist der relevante Code:
Dim BackBuffer As Surface '' BackBuffer
Dim FrontBuffer As Surface '' Primary surface
Dim DDDevice As Device '' DirectDraw Device

...

DDDevice = New Device '' Initialize the Object

'' Attach the window To the device
DDDevice.SetCooperativeLevel(Me, CooperativeLevelFlags.Normal)

...

BackBuffer = New Surface(New SurfaceDescription, DDDevice)
Bei der letzten Zeile kriege ich die Fehlermeldung. Wieso?
Im übrigen habe ich noch den FrontBuffer, der aber perfekt funktioniert. (habs getestet)
Ich arbeite mit VB.NET 2008.
Antwort:
Von Nico
E-Mail nico.schertler@gmx.de
Datum 06. Januar 2011 um 17:59:34
Antwort Huch, ich wollte dich nicht verwirren ;).
Also fangen wir mal etwas weiter vorn an. In DX9 gibt es kein DirectDraw. Nicht so richtig zumindest. Das läuft alles über D3D. Für zweidimensionale Inhalte gibt es dann das Sprite-Objekt. Zum Beispiel...
Deine Device-Instanzierung hat mich etwas irritiert. Bei mir hat Device nur genau einen Konstruktor. Und das ist auch der, bei dem u.A. die Presentation-Parameters und das Window-Handle übergeben werden. Na gut... ich arbeite ja auch nicht direkt mit MDX.
Die Initialisierung kann zum Beispiel so aussehen:
Public Function InitDX(ByRef Handle As Control) As Boolean
Resolution = New Vector2(Handle.Width, Handle.Height)
Try
D3DDevice = New Device(0, _
DeviceType.Hardware, _
Handle, _
CreateFlags.HardwareVertexProcessing, _
PresentParams())
Catch ex As Exception
Debug.Print(ex.Message)
Return False
End Try

D3DDevice.SetRenderState(RenderStates.Lighting, False)
D3DDevice.SetRenderState(RenderStates.CullMode, Cull.None)

Return True
End Function

Public Function PresentParams() As PresentParameters
Dim pp As New PresentParameters
pp.BackBufferFormat = Format.A8R8G8B8 '32 bit Backbuffer
pp.SwapEffect = SwapEffect.Discard
pp.Windowed = True
pp.BackBufferWidth = Resolution.X
pp.BackBufferHeight = Resolution.Y
pp.PresentationInterval = PresentInterval.Immediate 'Gerenderten Frame sofort anzeigen
Return pp
End Function
Poste am besten mal deinen kompletten Initialisierungscode.

Nico
[ Antwort schreiben | Zurück zum DirectX-Forum | Forum-Hilfe ]
Antworten
DX9: DirectDraw mit DirectX 9 (Windowed Mode) - S. P. Gardebiter 06. Januar 2011 um 16:58:33
Re: DirectDraw mit DirectX 9 (Windowed Mode) - Nico 06. Januar 2011 um 17:33:09
Re: DirectDraw mit DirectX 9 (Windowed Mode) - S. P. Gardebiter 06. Januar 2011 um 17:53:00
Re: DirectDraw mit DirectX 9 (Windowed Mode) - Nico 06. Januar 2011 um 17:59:34
Re: DirectDraw mit DirectX 9 (Windowed Mode) - S. P. Gardebiter 06. Januar 2011 um 18:14:31
Re: DirectDraw mit DirectX 9 (Windowed Mode) - Nico 06. Januar 2011 um 21:19:41
Re: DirectDraw mit DirectX 9 (Windowed Mode) - S. P. Gardebiter 19. Januar 2011 um 00:11:27
Re: DirectDraw mit DirectX 9 (Windowed Mode) - Nico 19. Januar 2011 um 00:28:59
Re: DirectDraw mit DirectX 9 (Windowed Mode) - S. P. Gardebiter 12. Februar 2011 um 20:27:39

Ihre Antwort
(Nick-)Name   Wichtige Informationen zur Namensangabe
E-Mail (opt.)  Wichtige Informationen zur Angabe einer eMail-Adresse
Thema   Wichtige Informationen zur Angabe eines Themas
Betrifft (IDE)  DirectX 9
Ihre Antwort
Smilies
Mehr...
FettKursivUnterstrichen   Übersicht der Tipp-KürzelÜbersicht der Projekt-KürzelÜbersicht der Bücher-Kürzel 
Homepage
Titel
Root-Smilies              
             
             
[ Zurück zum DirectX-Forum | Forum-Archiv | Forum-Hilfe | Chat ]

Zum Seitenanfang

Startseite | VB-/VBA-Tipps | Projekte | Tutorials | API-Referenz | Komponenten | Bücherecke | Gewinnspiele | VB.Net | .Net-Forum | DirectX | DirectX-Forum | Chat | Ausschreibungen | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Sonntag, 13. Dezember 2015