2016-07-26 1 views
0

スタンドアロンとしても、winformアプリケーション内でも実行できる小さなエンジンで作業しています。 これまで私は両方とも動作していましたが、唯一の問題は、ビジュアルスタジオでのデバッグ中に、winformアプリケーションのゲーム画面の更新が遅くなり、結果としてプレーヤーが遅れてしまうことです。Native C++ OpenGLからManform C++へのWinform C# - デバッグ中の遅い

ただし、作成した.exeをデバッガなしで開くと、スムーズに実行されます。

私は簡単にwinformを編集して、自分の変更を見て、遅滞なくゲームをプレイできるように頼んでいます。

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

Sweet.Editorが管理C++アプリケーションであるSweet.Wrapperに依存C#Winフォーム、次のとおりです。

あなたはここに私のコードを見ることができます。これは、Sweet.Game(ゲーム専用コンポーネント、スタンドアロンとしても実行可能)とSweet.Engine(Sweet Coreなどに依存しますが、Sweet.EngineをSweet.Gameに含める必要があるため抽象化しています)

このツールは、特定のPanelのHWNDを取得し、新しいHWNDを作成するのではなくそのHWNDを使用してエンジンを作成するという仕組みです。これがスタンドアロンとツールの唯一の違いです。

私はSweetEngine内で自分のループを実行している可能性があります。 winformがUpdateとRenderを呼び出すようにこれを変更しようとしましたが、これは何とか別のループで実行するよりも遅かったです。 また、アプリケーションとUpdateおよびRenderを呼び出すよりも速い理由がわかりません。

私が遭遇したもう1つの問題は、ネイティブのC++コードをデバッグできないため、その内部でステップできないことです。これは何とか修正できますか?

答えて

0

WPFに切り替え、UserControlから継承するクラスを使用して、OnPaint()が呼び出されたときに描画できるようにしても、OnPaintを1秒間に60回呼び出すタイマーを使用しています。今それはより良く働いています。