Gepostet: |
C# DirectX 9.0 DirectDraw Surface-Fehler | ||||||||||
Ich hab' damals (2004) in Visual Basic 6.0 mit DirectX 8.0 ein kleines 2D-Autorennspiel gebastelt, das leider nicht mehr unter XP lief. Nun hab ich mich endlich mal hingesetzt und es mit C# und DirectX 9.0 für WindowsXP neu gebaut. Leider hat nach einer gewissen Zeit das Spiel zunächst aufgehört den Text auszugeben. Ich erhielt eine Microsoft.DirectX.DirectDraw.CannotCreateDeviceContextException. Diesen Fehler konnte ich beheben, indem ich m_HauptDevice.RestoreAllSurfaces(); verwendete und dann das Haupt, sowie das Hilfssurface (eine Art Backbuffer) Disposed und auf null gesetzt habe und darauf hin erneut geladen habe. Für die Ausgabe der Bilder verwende ich Microsoft.DirectX.DirectDraw.Surface und dann DrawFast(). Nun ist das Spiel zwar nicht mehr abgestürzt und brachte auch keinerlei Fehlermeldungen mehr, jedoch gab es nach einiger Zeit, zumeist nach einem Levelwechsel Bildfehler. Die Surfaces wurden mit DrawFast() nicht mehr korrekt ausgeben. Es sah aus, als würde man versuchen aus dem Grafikspeicher zu lesen, ohne den Pitchwert zu beachten. Ich erstelle jetzt bei jedem Levelsprung, sowie bei einer SurfaceLostException das HauptDevice, das HauptSurface, das HilfsSurface und alle Bilder neu. Nun tritt der beschriebene Fehler zwar seltener auf, jedoch war es mir immer noch nicht möglich, ihn zu verhindern. Leider scheint das Internet DirectDraw verbannt zu haben. Doch da ich nur dieses 2D Spiel konvertieren möchte ohne auf Direct3D umzusteigen (was dann mein nächstes Ziel sein wird) würde ich mich sehr freuen, falls mir jemand helfen könnte. |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Ich wollt euch grad mal n paar Screenshots schicken. Geht aber nicht. Wenn ich normal Screenshots vom Spiel mache: alles Super, aber sobald der Bildfehler auftritt und ich versuch einen Screenshot zu machen bringt er mir die Fehlermeldung, dass mein Arbeitsspeicher für das Bild nicht ausreicht und ich ihn bitte leeren soll!! Bin jetzt erst recht verwirrt.. |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Ähm war n Fehler mit Pointern... Ich übergeb vor DrawText noch n Fonthandle an das Surface, damit es die richtige Schriftart einstellt. nur leider kümmert sich da der Garbage-Collektor nicht mehr drum >:( Folglich wird der RAM immer voller, bis das Spiel abstürzt.... |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
also hast du den fehler selbst gefunden ;-) | |||||||||||
Zum Seitenanfang | Homepage ICQ | ||||||||||