Hi,
I have a very simple pair of shaders. After creating a program with them,
glGetProgramInfoLog gives this warning:
WARNING: Could not find vertex shader attribute 'webgl_178fd81400000002' to
match BindAttributeLocation request.
Here are the shaders:
#version 100
precision mediump float;
attribute vec3 in_position;
void main() {
gl_Position = vec4(in_position, 1);
}
#version 100
precision mediump float;
void main() {
gl_FragColor = vec4(0, 0, 1, 1);
}
This is how I load the shaders:
GLuint gr_loadShader(const char* filePath, GLenum shaderType) {
FILE* file = resources::openFile(filePath, "rb");
if (!file) {
DLOG("Failed to open shader %s\n", filePath);
return 0;
}
fseek(file, 0, SEEK_END);
long fileSize = ftell(file);
fseek(file, 0, SEEK_SET);
char* shaderSource = (char*)malloc(fileSize + 1);
fread(shaderSource, fileSize, 1, file);
fclose(file);
shaderSource[fileSize] = '\0';
GLuint shaderID = glCreateShader(shaderType);
error("glCreateShader");
GLint result = GL_FALSE;
int InfoLogLength;
glShaderSource(shaderID, 1, (const GLchar**)&shaderSource, NULL);
glCompileShader(shaderID);
// Check the shader
glGetShaderiv(shaderID, GL_COMPILE_STATUS, &result);
glGetShaderiv(shaderID, GL_INFO_LOG_LENGTH, &InfoLogLength);
char errorMessage[InfoLogLength];
glGetShaderInfoLog(shaderID, InfoLogLength, NULL, errorMessage);
DLOG("%s\n", errorMessage);
return shaderID;
}
GLuint gr_createProgram(const char* vs, const char* fs) {
char vsFilePath[128];
char fsFilePath[128];
sprintf(vsFilePath, "assets/shaders/gles1/%s.vs", vs);
sprintf(fsFilePath, "assets/shaders/gles1/%s.fs", fs);
GLuint vsID = gr_loadShader(vsFilePath, GL_VERTEX_SHADER);
GLuint fsID = gr_loadShader(fsFilePath, GL_FRAGMENT_SHADER);
GLuint programID = glCreateProgram();
error("glCreateProgran");
glAttachShader(programID, vsID);
error("glAttachShader vs");
glAttachShader(programID, fsID);
error("glAttachShader fs");
glLinkProgram(programID);
error("glLinkProgram");
glDeleteShader(vsID);
glDeleteShader(fsID);
GLint result = GL_FALSE;
int InfoLogLength;
glGetProgramiv(programID, GL_LINK_STATUS, &result);
glGetProgramiv(programID, GL_INFO_LOG_LENGTH, &InfoLogLength);
char errorMessage[512]{'\0'};
glGetProgramInfoLog(programID, InfoLogLength, NULL, errorMessage);
DLOG("Program Info: %s\n", errorMessage);
return programID;
}
Same code doesn't cause issues on desktop (OpenGL 2 at least)
Why am I seeing this warning?
--
You received this message because you are subscribed to the Google Groups
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.