0

画面にスコアを表示しようとしています。次のコードは正常に動作します。

g_Font = NULL;
D3DXFONT_DESC f = {fontSize,
                    0,
                    400,
                    0,
                    false,
                    DEFAULT_CHARSET,
                    OUT_TT_PRECIS,
                    CLIP_DEFAULT_PRECIS,
                    DEFAULT_PITCH,
                    fontName};
fontDesc = f;
fontPosition.top = top;
fontPosition.left = left;
fontPosition.right = right;
fontPosition.bottom = bottom;
text = t;
D3DXCreateFontIndirect(device,&fontDesc,&g_Font);

フレームごとに次の部分がレンダリングされます。

g_Font->DrawText(NULL,
        text,
        -1,
        &fontPosition,
        DT_CENTER,
        0xffffffff); //draw text

私がやりたいことは、実行時にテキストを更新することです。描画コードはフレームごとに実行されるため、テキスト変数を更新するだけですが、機能しません。単純なテキストは機能しますが、次の構造は機能しません。

const size_t buflen = 100;
TCHAR buf[buflen];
_sntprintf(buf, buflen - 1, TEXT("Point: %d"), point);
text = (LPCTSTR)buf;

オンラインで見つけたほぼすべての解決策を試しましたが、うまくいきません。整数が正常に変換されていることがわかりますが、次のレンダリングにはおかしな文字があります。解決策はありますか?

4

1 に答える 1

0

あなたが投稿したコードは不完全ですが、それでも問題の解決に役立つ答えを提供しようと思います。

最初の問題は、あなたが概念を混ぜ合わせていてDrawText、それが何かのUI要素であるWinFormsかのように扱っていると思います。テキストを更新するたびに、DrawTextを呼び出す必要があります。渡したバッファへのポインタは保存されず、このバッファが変更されたときにテキストが自動的に更新されます。こちらのドキュメントを参照してください。「ラベルラッパー」を追加する場合は、との呼び出しの間DrawTextに、おそらくRenderメソッド内で呼び出す必要がBeginSceneありEndSceneます。

不条理な文字については、文字列が正しく変換されていれば、もう一度描く前によろしいですかClearRenderTarget

于 2013-01-24T18:35:43.453 に答える