カスタムリソース

初期位置キャラクタ用の画像を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かどうかで場合わけして、エラーメッセージに含めるべきですね。