カテゴリー別アーカイブ: C++

C++言語や標準ライブラリ

WCHARって何ですか? 文字列の変換

これまでchar型でしか文字列を扱ったことがなかったので、DirectXTexの画像ファイル読み込みでLPCWSTR(const WCHAR*)という型を見ても特に気にせず、L”文字列”と書けばいいやぐらいしか考えてませんでした。しかし、リテラルではなくconst char*のファイルパスを渡そうとするとコンパイルエラー、どうやら簡単に型のキャストで済むようなものではないらしい。

WCHAR( wchar_t )とは
Wikipedia ワイド文字
その他、ググって調べてみた。

文字列の内部表現が違うので、テキストファイル(char)から取得した文字列をそのままでは使えず、変換する必要があるようです。「wchar_t = 1文字」とは限らないので取扱いに注意(なんか中途半端な文字型のような気がする)。
C++11ではchar16_tやchar32_tという文字型があるので、今後慎重に文字列型の扱い方を考えていきたい。

文字列の変換方法を調べていくつか作成してみました。
続きを読む WCHARって何ですか? 文字列の変換

boost spirit qiでmqo(メタセコイア)ファイル解析&とりあえず描画

ポリゴンが描画できるようになったので、今度はモデルデータファイルを読み込んで表示してみる。モデルデータは、データ作成と解析が簡単にできるmqoファイル(メタセコイアの出力ファイル、テキスト形式)を使用する。

とりあえずmqoファイル表示
とりあえずmqoファイル表示

続きを読む boost spirit qiでmqo(メタセコイア)ファイル解析&とりあえず描画

DirectX11 スマートポインタ活用 BoostとC++11

これまでプログラムしていて、これは危険かもしれないと感じるソースコードがありました。

これのback_buff->Release();
GetBufferで取得したテクスチャを使用後Releaseが必要ですが、書き忘れる自信があります。というか忘れてました。単純なプログラムであればVisualStuioのデバッグですぐにリークが検出され修正個所もすぐに発見できますが、複雑になってくるとそうはいきません。
というわけで、スマートポインタをつかって自動的にRelease関数を呼ぶようにします。

続きを読む DirectX11 スマートポインタ活用 BoostとC++11

VS2012 ライブラリ(lib)のリンク _ITERATOR_DEBUG_LEVELとRuntimeLibrary

DirectX11 DirectXTexでテクスチャ対応でReleaseビルドしたlibファイルをDebugビルドで使用するとライブラリ実装の不一致エラーが出てしまう問題を回避してみる。(libファイルだけ公開されているライブラリを組み込むときに同じ問題が発生するかもしれないので)

続きを読む VS2012 ライブラリ(lib)のリンク _ITERATOR_DEBUG_LEVELとRuntimeLibrary