提示の端末画面ですが以下のエラーが発生しますこれは何が原因なのでしょうか?デバッグした結果以下の画像ロード関数をコメントアウトすると普通に動くためこの関数問題なのですがこの何が悪いのでしょうか?ファイルが読み込めない時はエラーメッセージを表示するよにしているためファイルが読み込めないエラーということはないはずです。ファイルが破損?しているということでしょうか?ファイルを表示させていましたが普通に表示されます。
環境
OS: ubuntu
参考サイト:https://ja.stackoverflow.com/questions/82425/corrupted-size-vs-prev-size
端末
shigurechan@shigurechan-System-Product-Name:~/prg/2D_GameProject$ sh editor.sh g++ -O2 -g -c -MMD -MP source/Stage.cpp -o object/Stage.o g++ -O2 ../FrameWork/object/Sprite.o ../FrameWork/object/Transform.o ../FrameWork/object/Camera.o ../FrameWork/object/Init.o ../FrameWork/object/Resource.o ../FrameWork/object/GameObject.o ../FrameWork/object/Shader.o ../FrameWork/object/Window.o object/Entry.o object/Game.o object/Main.o object/Player.o object/Stage.o object/Brick.o -o Editor -ldl -lGLESv2 -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -ldl -lX11 corrupted size vs. prev_size Aborted (core dumped)
画像ロード関数
cpp
// ##################################### テクスチャをロード ##################################### FrameWork::Texture FrameWork::LoadTexture(const char* fileName) { Texture texture; glm::ivec2 size; int channel; unsigned char* data = NULL; data = stbi_load(fileName, &size.x, &size.y, &channel, 0); texture.size = size; if (data == NULL) { std::cerr << "画像が見つかりません: " << fileName << std::endl; assert(0); } glGenTextures(1, &texture.ID); //テクスチャIDの生成 glBindTexture(GL_TEXTURE_2D, texture.ID); // IDバインド //テクスチャ生成 if (channel == 4) { glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, size.x, size.y, 0, GL_RGBA, GL_UNSIGNED_BYTE, data); } else if (channel == 3) { glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, size.x, size.y, 0, GL_RGB, GL_UNSIGNED_BYTE, data); } else if (channel == 2) { glTexImage2D(GL_TEXTURE_2D, 0, GL_RG, size.x, size.y, 0, GL_RG, GL_UNSIGNED_BYTE, data); } else if (channel == 1) { glTexImage2D(GL_TEXTURE_2D, 0, GL_RED, size.x, size.y, 0, GL_RED, GL_UNSIGNED_BYTE, data); } else { std::cerr << "未対応の形式のチャンネル数です: " << fileName <<" "<< "チャンネル数: "<<channel<< std::endl; assert(0); } // テクスチャの補間設定 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glBindTexture(GL_TEXTURE_2D, 0); texture.data = data; return texture; }
聞くだけ聞いて用がすんだら礼も言わず削除か。
まだ回答がついていません
会員登録して回答してみよう