SOIL を使用して JPEG 画像からテクスチャを読み込む機能があります。
これまでのところ、関数を使用してテクスチャをロードし、SOIL_load_image()
OpenGL を使用してイメージを提供してきましたglTexImage2D
(以下のコードを参照)。でも!私のテクスチャは上下逆なので、SOIL_load_OGL_texture()
代わりにを使用しSOIL_FLAG_INVERT_Y
、画像を反転するために を提供したいと思いました。私の問題は、SOIL_load_OGL_texture()
関数で未処理の例外が発生することです。
コードはほとんどドキュメントからのコピー ペーストなので、このエラーが発生する理由がわかりません。
(注: 頂点シェーダーでテクスチャを反転できますが、SOIL を使用したいと思います。)
古い方法
int width;
int height;
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, textures[0]);
image = SOIL_load_image(filename, &width, &height, 0, SOIL_LOAD_RGB);
if (image == NULL) {
std::cout << "An error occurred while loading image." << std::endl;
exit(EXIT_FAILURE);
}
std::cout << "Loaded first texture image" << std::endl;
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image);
SOIL_free_image_data(image);
今試していること
GLuint image;
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, textures[0]);
image = SOIL_load_OGL_texture(
filename,
SOIL_LOAD_RGB,
SOIL_CREATE_NEW_ID,
SOIL_FLAG_INVERT_Y
);
if (image == 0)
cerr << "SOIL loading error: '" << SOIL_last_result() << "' (" << "res_texture.png" << ")" << endl;
そしてエラー
Unhandled exception at 0x0F5427FF (msvcr110d.dll) in AnotherTutorial.exe: 0xC0000005: Access violation reading location 0x00000000.