1

だから私はこのゲームエンジンを構築していますが、D3D11を使用してメインゲームウィンドウにデバッグ情報を含むある種のオーバーレイを作成したり、テキストをまったく描画したりするのは非常に難しいことがわかったので、別のウィンドウを作成すると思いました私のデバッグデータを含めるために。

ウィンドウは正常に作成されましたが、デバッグ情報をウィンドウに書き込む方法がわかりません。プロジェクトを望ましくないCLRプロジェクトに変換する必要があるため、Windowsフォームデザイナーを使用したくありません。

私は少なくとも3時間(正直に)グーグルで検索しており、さまざまな解決策を試しましたが、実際に使用するのに実用的なものはありませんでした/機能していませんでした.

書きたいデバッグ情報は、グローバルな float 値に由来します。例としてはCAM_POS_X、カメラが現在どの X 座標にあるかを示す浮動小数点値を保持するものがあります。

このようなものが望まれます:

|SiriusAlpha 0.1 デバッグ ウィンドウ_ |
|現在の X 位置: CAM_POS_X|
|現在の Y 位置: CAM_POS_Y|
|現在の Z 位置: CAM_POS_Z|
|現在のヨー: CAM_YAW_ _ _ __ |
|現在のピッチ: CAM_PITCH_ __| |
|現在の FPS:CUR_FPS
__ _ ____ |

これらの値はすべて、必ずしも浮動小数点変数ではありません。それらは、文字列、倍精度浮動小数点数、整数、さらにはブール値である可能性があります。

D3D11 でこれを行う方法を誰かが喜んで説明してくれ、デバッグ ウィンドウのスケネンニガン全体をスキップできれば、さらにうれしいです。

それ以外の場合は、誰かがこれがどのように行われるかを説明していただければ幸いです。

4

1 に答える 1

0

TextOut()を試しましたか?msdnの記事を読んでください。すでにデバイスコンテキストが必要です。残りはすばやく簡単です。

TextOut関数は、現在選択されているフォント、背景色、およびテキストの色を使用して、指定された場所に文字列を書き込みます。

文字列への印刷は簡単です。

wchar buf[128];
swprintf(buf, "Current X Position: %f", CAM_X_POS);
TextOut(yourDC, screenXPos, screenYPos, &buf, sizeof(buf));

私はこれをテストしていませんが、MSDNのドキュメントからこれは正常に機能するはずです。

于 2012-07-20T13:50:32.763 に答える