• ベストアンサー

DirectXでの変数の表示について

デバッグ用に変数を表示できるようにしたいんですが、float型をchar*の文字列に変換できるようにするにはどうしたらいいですかね? Javaのようにstringオブジェクトに用意されているんでしょうか? どうかご教授お願いします。 あと実際、DirectXでデバッグ用に変数を表示する場合の一般的にどのような方法をとられているのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • aho0xff
  • ベストアンサー率12% (218/1771)
回答No.3

お礼ありがとうございます。再度No.2です。 「速度」ですか・・・そうですねぇ・・個人的にはデバック用に用意したコードに そこまで速度を求めてどうするのか?とも思ったりしますが、私個人の指針を とりあえずあげてみます。 まずたとえデバックコードだろうが絶対速度が欲しい!!というのなら、ビデオメモリに 必要となる文字をあらかじめ描画しておき、表示するときはそれを使用して表示する 方法があります。基本的には半角の a~z A~Z 0~9 と一部の記号があればデバック用なら 事足りるハズです。準備する方法が分からないなら、あらかじめ画像を用意するのが早いです。 問題があるとすれば、用意した分の文字しか使えない点でしょうか? デバック用に使用する文字コードを任意の転送元座標に変換するのは半角文字だけなら 変換テーブルを作成すれば割とすんなりいくかと思います。 後は文字列を描画する方法ですが、文字に限らず、各サーフェス(テクスチャ?)に対して GDIで描画する必要がある場合、一回の描画ループで何回もGDI関数を使用しない方向に 持っていくのがキモです。つまり、D3DXFont を使用する場合、いくらデバック用だからって 何回も DrawText() メソッドを使用したら、そりゃその分だけ速度が落ちていきます。 あらかじめデバック用の表示文字列を、文字列バッファとして保持しておいて、 画面に転送する直前にDrawText()一回で全デバック文字を描画してしまうのが、 速度的にも負担は最小で済むはずです。 あくまで私個人の・・・ではありますが、2通り概念だけ説明してみました。 コレを鵜呑みにするもしないも、実際どう作るのかどうかも後は貴方次第 ということでいかがでしょうか?

mrkmrk
質問者

お礼

2度もご回答感謝します。確かに考えてみれば、速度はそこまで必要ありませんよね。 提案された方法ですが、非常に参考になりました。 今回は手っ取り早くD3DXFontでやってみます。 ありがとうございました。

その他の回答 (2)

  • aho0xff
  • ベストアンサー率12% (218/1771)
回答No.2

float型を文字列にするにはNo1番さんの回答でいいと思います。 後は描画方法ですが、いくつかあります。参考URLをどうぞ 個人的なオススメは D3DXFont を利用することです。 sprintfで表示する文字列を作成したのちに、D3DXFontで表示する。 あくまでデバック用途なら、おそらくコレが一番手っ取り早いです。

参考URL:
http://www.c3.club.kyutech.ac.jp/~sukiyaki/index.php?%CA%B8%BB%FA%CE%F3%C9%C1%B2%E8
mrkmrk
質問者

お礼

ご回答感謝いたします。そのサイトを見て作成していたのですが、実行速度が遅くデバック向きではないのかと思い、質問させていただきました。言葉足らずで申し訳ございません。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

sprintf で文字列として確保したメモリに書き出せば良いと思います。 C++だったら、std::string がありますが、Cにはありません。

mrkmrk
質問者

お礼

ありがとうございます。おかげでできました。 C++には標準ライブラリ用意されているのですね。

関連するQ&A