提示の端末画面ですが以下のエラーが発生しますこれは何が原因なのでしょうか?デバッグした結果以下の画像ロード関数をコメントアウトすると普通に動くためこの関数問題なのですがこの何が悪いのでしょうか?ファイルが読み込めない時はエラーメッセージを表示するよにしているためファイルが読み込めないエラーということはないはずです。ファイルが破損?しているということでしょうか?ファイルを表示させていましたが普通に表示されます。
環境
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
1 2// ##################################### テクスチャをロード ##################################### 3FrameWork::Texture FrameWork::LoadTexture(const char* fileName) 4{ 5 Texture texture; 6 7 glm::ivec2 size; 8 int channel; 9 10 unsigned char* data = NULL; 11 data = stbi_load(fileName, &size.x, &size.y, &channel, 0); 12 13 texture.size = size; 14 15 if (data == NULL) 16 { 17 std::cerr << "画像が見つかりません: " << fileName << std::endl; 18 assert(0); 19 } 20 21 glGenTextures(1, &texture.ID); //テクスチャIDの生成 22 glBindTexture(GL_TEXTURE_2D, texture.ID); // IDバインド 23 24 //テクスチャ生成 25 26 if (channel == 4) 27 { 28 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, size.x, size.y, 0, GL_RGBA, GL_UNSIGNED_BYTE, data); 29 } 30 else if (channel == 3) 31 { 32 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, size.x, size.y, 0, GL_RGB, GL_UNSIGNED_BYTE, data); 33 } 34 else if (channel == 2) 35 { 36 glTexImage2D(GL_TEXTURE_2D, 0, GL_RG, size.x, size.y, 0, GL_RG, GL_UNSIGNED_BYTE, data); 37 } 38 else if (channel == 1) 39 { 40 glTexImage2D(GL_TEXTURE_2D, 0, GL_RED, size.x, size.y, 0, GL_RED, GL_UNSIGNED_BYTE, data); 41 } 42 else 43 { 44 std::cerr << "未対応の形式のチャンネル数です: " << fileName <<" "<< "チャンネル数: "<<channel<< std::endl; 45 assert(0); 46 } 47 48 // テクスチャの補間設定 49 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 50 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 51 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); 52 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 53 glBindTexture(GL_TEXTURE_2D, 0); 54 55 texture.data = data; 56 57 return texture; 58 59} 60
こちらの質問が複数のユーザーから「調査したこと・試したことが記載されていない質問」という指摘を受けました。
聞くだけ聞いて用がすんだら礼も言わず削除か。