単純な頂点シェーダーのコンパイルで問題が発生しました。私はコンパイルにこの関数を使用しています:
GLuint TShaderManager::loadShaderFromFile(const std::string& fName, GLenum shaderType)
{
string path = fName;
//Open file
GLuint shaderID = 0;
string shaderString;
ifstream sourceFile(path.c_str());
//Source file loaded
if(sourceFile)
{
shaderString.assign(istreambuf_iterator<char>(sourceFile),
istreambuf_iterator<char>()); // Get shader source
shaderID = glCreateShader(shaderType); // Create shader ID
const GLchar* shaderSource = shaderString.c_str();
glShaderSource(shaderID, 1, (const GLchar**)&shaderSource, NULL); // Set shader source
glCompileShader(shaderID); // Compile shader source
GLint shaderCompiled = GL_FALSE;
glGetShaderiv(shaderID, GL_COMPILE_STATUS, &shaderCompiled); //Check shader for errors
if(shaderCompiled != GL_TRUE)
{
TError::showMessage("Failed to compile shader"); // I'm getting this error
glDeleteShader(shaderID);
shaderID = 0;
}
}
else
{
TError::showMessage(string("Unable to open file ").append(path.c_str()));
}
return shaderID;
}
これはコンパイルされない私の頂点シェーダーです:
#version 330
layout(location = 0) in vec4 position;
void main()
{
gl_Position = position;
}
だから基本的にshaderCompiled
残るGL_FALSE
。
デバッグ モードでチェックしました。シェーダーは機能として適切にロードされているstring
ため、問題はありません。
また、それが必要かどうかはわかりませんが、適切にコンパイルされるフラグメントシェーダーもここに入れています。
#version 330
out vec4 outputColor;
void main()
{
float lerpValue = gl_FragCoord.y / 800.0f;
outputColor = mix(vec4(1.0f, 1.0f, 1.0f, 1.0f),
vec4(0.2f, 0.2f, 0.2f, 1.0f), lerpValue);
}
編集:
glGetShaderInfoLog
次のメッセージが表示されます。
エラー: 0:3 '場所': 構文エラー解析エラー