カスタムリソース
初期位置キャラクタ用の画像をWin32リソースファイルとして参照するためにPNGのカスタムリソースに対応しました。
今日の差分
元々読み込み処理がstd::istreamに抽象化されていたので、リソースのアドレスを取得してboost::iostreams::array_sourceを作っているだけです。
短いので貼っておきます。
direct3d_texture9 create_png_texture( direct3d_device9& device, ::HMODULE module, const char* name) { ::HRSRC rs = ::FindResourceA(module, name, MAKEINTRESOURCE(HAMIGAKI_RT_PNG)); if (rs == 0) throw std::runtime_error("cannot find resource"); ::DWORD size = ::SizeofResource(module, rs); void* ptr = ::LockResource(::LoadResource(module, rs)); BOOST_ASSERT(ptr != 0); io::stream<io::array_source> is(static_cast<char*>(ptr), size); return create_png_texture_impl(device, is); }
エラーメッセージは手抜きです。
nameがINTRESOURCEかどうかで場合わけして、エラーメッセージに含めるべきですね。