テレワークならECナビ Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!
無料ホームページ 無料のクレジットカード 海外格安航空券 海外旅行保険が無料! 海外ホテル


log

2011.08.28 C++:ビルボードビームとデバッグ用関数

ファイル 364-1.jpg

今回はビルボードビームを作ったり、新しく可変長引数が使いたいなと思ったので
ちょっとデバッグ用関数を作ってみたりしてみました。

実を言うと、ビルボードビームの実装自体はほぼ9割方、かなり前に組んでいたので
すが、そんなことをすっかり忘れていてふと再発見しただけなのでした苦笑。
とりあえず、テクスチャも用意してないけどサクッと確認。画像の白いライン部分が
ビルボードビームの実装です。基本的にはパーティクルと同じでビルボードの応用
ですが、ビルボードビームのポリゴンは完全にカメラと向かい合う訳ではないので
Zソートは出来ないんですよね。。さて、どうしたもんかと思いましたが。解決方法として
不透明なテクスチャのビルボードビームを描画した後にポストエフェクトでぼかすのが
一番都合がいいかなと思いました。

それと、デバッグ用のメッセージを表示する関数を作ったのでちょっと公開してみます。

// デバッグ用メッセージをダイアログで表示させる関数
void DebugMessege(
char* TitleMessage, // ダイアログのタイトル用文字列
char* Parameter, ... // メッセージ用文字列(可変長引数)
// printf()のように、Parameterの第1引数は書式文字列、
// 第2引数以降は変換するパラメータのリストを記述する
){
// メッセージ用文字列配列を作成
char ErrorMessage[1024];
// 可変長引数にアクセスするためのポインタ
va_list argument_pointer;
// 可変長引数Parameterの先頭引数のポインタを取得
va_start(
argument_pointer,// 可変長引数の先頭引数のポインタを格納
Parameter // 取得する可変長引数
);
// 可変長引数リストのデータを書式文字列に従って文字配列に書き込み
// cf.vsprintf_s()の第4引数部分は普通ならば関数に渡された
// 可変長引数の1番目の要素から始まりそうだが、
// vsprintf_s()の第3引数に直接Parameterを指定している
// ので可変長引数の2番目の要素からアクセスされる?
vsprintf_s(
ErrorMessage, // 文字列の格納先変数
sizeof(ErrorMessage),// 連結した文字列のサイズ
Parameter, // 書式文字列
argument_pointer // 変換するパラメータのリスト
);
// 可変長引数へのアクセスを終了したことを伝える
va_end( argument_pointer );
// メッセージをダイアログで表示。
MessageBox( NULL, ErrorMessage,
TitleMessage, MB_OK | MB_ICONSTOP );
// cf.デバッグウィンドウに出力する場合
// OutputDebugString( ErrorMessage );
}

コメント部分に書いておきましたが、vsprintf()の実装が今ひとつ分からなかったり。。
とりあえず簡単にメッセージを表示できるようになったからいいですけどね。
それにしても、、日記内にプログラム記述するのがちと面倒くさいな笑。