OpenGL、Assimp、Boost.GILを使ってモデルをロードする簡単なアプリを書いた。Boost.GILを使ってOpenGLテクスチャを読み込む
私のモデルにはPNGテクスチャが含まれています。私がGILを使ってロードし、OPENGLを通してレンダリングすると、私は間違った結果を得ました。感謝のコードXLの、私はOpenGLGLでロードされた自分のテクスチャが画像自体とは全く異なることがわかりました。
これも同様の質問ですが、私はその手順に従いましたが、同じミスがありました。ここで
は私のコードです:
// --------- image loading
std::experimental::filesystem::path path(pathstr);
gil::rgb8_image_t img;
if (path.extension() == ".jpg" || path.extension() == ".jpeg" || path.extension() == ".png")
{
if (path.extension() == ".png")
gil::png_read_and_convert_image(path.string(), img);
else
gil::jpeg_read_and_convert_image(path.string(), img);
_width = static_cast<int>(img.width());
_height = static_cast<int>(img.height());
typedef decltype(img)::value_type pixel;
auto srcView = gil::view(img);
//auto view = gil::interleaved_view(
// img.width(), img.height(), &*gil::view(img).pixels(), img.width() * sizeof pixel);
auto pixeldata = new pixel[_width * _height];
auto dstView = gil::interleaved_view(
img.width(), img.height(), pixeldata, img.width() * sizeof pixel);
gil::copy_pixels(srcView, dstView);
}
// ---------- texture loading
{
glBindTexture(GL_TEXTURE_2D, handle());
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB,
image.width(), image.height(),
0, GL_RGB, GL_UNSIGNED_BYTE,
reinterpret_cast<const void*>(image.data()));
glGenerateMipmap(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, 0);
}
それを実行すると、私のcodeXLデバッガはテクスチャになったことを私に報告します
他のすべてのテクスチャこのモデルの間違ったも。
それは私にとって参考になります!ありがとうございます! – ChungkingExpress