CSSC_Stormrider
Grünschnabel
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.
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.