提示コードの**///コメント部ですがprintf(),fprintf();関数**がすべて文字化けしてしまってデバッグが困難です。文字化けした文字が画面に出ているため何かしらのエラーが出ていますがこれはとりあえず自分で調べてみます。
GLint Game::LoadShaders(const char* Vertex_path,const char* fragment_path) { // printf("%s\n",Vertex_path); //シェーダIDを作成 GLuint VertexShaderID = glCreateShader(GL_VERTEX_SHADER); GLuint FragmentShaderID = glCreateShader(GL_FRAGMENT_SHADER); //バーティックスシェーダーを読み込む std::string vss; std::ifstream VertexShaderStream(Vertex_path,std::ios::in); if( VertexShaderStream.is_open() && true ) { std::stringstream sstr; sstr << VertexShaderStream.rdbuf(); vss = sstr.str(); // printf("%s\n",vss.c_str()); VertexShaderStream.close(); }else { printf("Vertex: Error\n"); } //フラグメントシェーダーを読み込む std::string fss; std::ifstream fragmentShaderStream(Vertex_path,std::ios::in); if( fragmentShaderStream.is_open() && true ) { std::stringstream sstr; sstr << fragmentShaderStream.rdbuf(); fss = sstr.str(); // printf("%s\n",fss.c_str()); fragmentShaderStream.close(); }else { printf("Vertex: Error\n"); } GLint Result = GL_FALSE; int InfoLogLength; // 頂点シェーダをコンパイルします。 //printf("Compiling shader : %s", Vertex_path); const char* VertexSourcePointer = vss.c_str(); glShaderSource(VertexShaderID, 1, &VertexSourcePointer , NULL); glCompileShader(VertexShaderID); // 頂点シェーダをチェックします。 glGetShaderiv(VertexShaderID, GL_COMPILE_STATUS, &Result); glGetShaderiv(VertexShaderID, GL_INFO_LOG_LENGTH, &InfoLogLength); std::vector<GLchar> VertexShaderErrorMessage(InfoLogLength); glGetShaderInfoLog(VertexShaderID, InfoLogLength, NULL, VertexShaderErrorMessage.data()); //fprintf(stdout, "%s\n", VertexShaderErrorMessage); //フラグメントシェーダをコンパイルします。 //printf("Compiling shader : %sn", fragment_path); const char* FragmentSourcePointer = fss.c_str(); glShaderSource(FragmentShaderID, 1, &FragmentSourcePointer, NULL); glCompileShader(FragmentShaderID); // フラグメントシェーダをチェックします。 glGetShaderiv(FragmentShaderID, GL_COMPILE_STATUS, &Result); glGetShaderiv(FragmentShaderID, GL_INFO_LOG_LENGTH, &InfoLogLength); std::vector<GLchar> FragmentShaderErrorMessage(InfoLogLength); glGetShaderInfoLog(FragmentShaderID, InfoLogLength, NULL, FragmentShaderErrorMessage.data()); //fprintf(stdout, "%s\n", FragmentShaderErrorMessage); // プログラムをリンクします。 fprintf(stdout, "Linking programn\n"); GLuint ProgramID = glCreateProgram(); glAttachShader(ProgramID, VertexShaderID); glAttachShader(ProgramID, FragmentShaderID); glLinkProgram(ProgramID); // プログラムをチェックします。 glGetProgramiv(ProgramID, GL_LINK_STATUS, &Result); glGetProgramiv(ProgramID, GL_INFO_LOG_LENGTH, &InfoLogLength); std::vector<GLchar> ProgramErrorMessage( max(InfoLogLength,1)); // GLchar* ProgramErrorMessage( max(InfoLogLength, int(1)) ); glGetProgramInfoLog(ProgramID, InfoLogLength, NULL, ProgramErrorMessage.data()); // fprintf(stdout, "%s\n", ProgramErrorMessage); printf("いいいいいいい\n"); // printf("ああああ\n"); glDeleteShader(VertexShaderID); glDeleteShader(FragmentShaderID); return ProgramID; }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。