2016-07-26 5 views
0

Ich arbeite an einer kleinen Engine, die als eigenständige oder in einer Winform-Anwendung ausgeführt werden kann. Bis jetzt habe ich beide arbeiten, das einzige Problem, das ich habe, ist, dass während des Debuggens in Visual Studio der Gamescreen der Winform-Anwendung langsam aktualisiert wird, was dazu führt, dass der Player zurückbleibt.Native C++ OpenGL zu verwaltet C++ zu Winform C# - langsam während des Debuggens

Aber wenn ich die erstellte .exe ohne den Debugger öffnen, läuft es reibungslos.

Damit ich die Winform leicht bearbeiten kann, meine Änderungen sehe und das Spiel ohne Verzögerung spiele, frage ich euch, ob ihr mir helfen könnt.

https://github.com/insanepure/SweetEngine/

Sweet.Editor ist die C# Winform, die auf der Sweet.Wrapper abhängt, die das verwaltete C++ Anwendung ist:

Sie können meinen Code hier sehen. Dies hängt von Sweet.Game (für spielspezifische Komponenten ab, die auch als Standalone ausgeführt werden können) und Sweet.Engine (was von Sweet Core usw. abhängt, aber ich abstrahiere das, so dass du nur Sweet.Engine in Sweet.Game einbinden musst)

So funktioniert das Tool, dass es die HWND eines bestimmten Panels erhält und dann die Engine mit diesem HWND erstellt, anstatt eine neue zu erstellen. Das ist der einzige Unterschied zwischen Standalone und Tool.

Das Problem kann sein, weil ich meine eigene Schleife in SweetEngine laufen lasse. Ich habe versucht, dies zu ändern, so dass die Winform Update und Render nennt, aber das war irgendwie langsamer als in einer separaten Schleife. Auch ich bin mir nicht sicher, warum das schneller ist als den Anwendungsaufruf Update und Rendering.

Ein anderes Problem, das ich fand, ist, dass ich meinen nativen C++ Code nicht debuggen kann, also kann ich nicht darin treten. Kann das irgendwie behoben werden?

Antwort

0

Auf WPF umgeschaltet und mit einer Klasse, die von usercontrol erbt, auf diese Weise kann ich zeichnen, wenn OnPaint() aufgerufen wird, auch ich verwende einen Timer, um OnPaint 60 Mal pro Sekunde aufzurufen. Jetzt funktioniert es besser.