Das bekannte Programm zur optimalen Vorbereitung auf die theoretische Führerscheinprüfung
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 S. P. Gardebiter
Datum 06. Januar 2011 um 18:14:31
Antwort Hier ist mein kompletter Code:
Imports Microsoft.DirectX
Imports Microsoft.DirectX.DirectDraw

Public Class frm_main

Dim BackBuffer As Surface '' BackBuffer
Dim FrontBuffer As Surface '' Primary surface
Dim DDDevice As Device '' DirectDraw Device
Dim frm_main_Clip As Clipper '' Clipper who tells the Object where To draw

Private Sub frm_main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
DDDevice = New Device() '' Initialize the Object

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

Dim FrontDesc As New SurfaceDescription
Dim FrontCaps As New SurfaceCaps

FrontCaps.PrimarySurface = True
FrontDesc.SurfaceCaps = FrontCaps
'' Init FrontBuffer
FrontBuffer = New Surface(FrontDesc, DDDevice)
'' Init BackBuffer
BackBuffer = New Surface(New SurfaceDescription, DDDevice)

'' Init the clipper
frm_main_Clip = New Clipper(DDDevice)

frm_main_Clip.Window = Me

FrontBuffer.Clipper = frm_main_Clip

End Sub
End Class
Ich glaube ich poste gleich etwas mehr Informationen, kann ja nicht schaden:

Ich arbeite an einem Editor für ein Spiel (mein Code da oben ist natürlich nur ein Test und gehört nicht dazu) und die einzigen beiden male wo ich etwas rendern muss, sind bei dem Map Editor und dem (eventuellen) Image Editor (alá Paint).
Ich denke mein Problem liegt schon im Wahl einer vernünftigen Libary. Ich habe da ziemlich hohe Ansprüche denke ich O:
Zum einen möchte ich nicht mit Kanonen auf Spatzen schießen, dann brauche ich irgendwas was relativ schnell zu lernen ist, schnell genug für meine Ansprüche ist und meine User nicht zwingt irgendwelche großen Libaries (> 10 MB) voher zu downloaden und zu installieren. (Mal abgesehen vom .Net Framework)
Eine GDI+ Lösung hatte ich schon aber die ist leider zu langsam für meine Zwecke. Ich wüsste auch jetzt nicht genau wie ich das mit dem Map Editor machen sollte in DirectDraw. (Vom graphischen her: Bitmap laden und nur einzellne Teile von ihr auf eine größere Fläche zeichnen und dass dann einmal auf den Bildschirm zeichnen lassen)
[ 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