在我正在创建的应用程序中,我使用了几个按需加载的纹理。直到现在我在主进程中创建了它们并且一切正常。现在我想将它们加载到一个单独的线程中。所以我用beginthread调用加载和绑定纹理的函数加载了纹理,但GL因SHADER_ERROR(1282)失败。我认为OpenGL可能需要一个初始初始化,但我一无所知
我正在用 C++ 编写代码,使用 GL3 和 GLFW 以及 STB 在 WinX64 上使用 GCC 进行图像处理
这里的代码
GLuint load_map(const char*filename)
{
GLuint texture;
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture); // all upcoming GL_TEXTURE_2D operations now have effect on this texture object
// set texture filtering parameters
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_BORDER);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
// load image
int width, height, nrChannels;
//
unsigned char *data = stbi_load((filename), &width, &height, &nrChannels, STBI_rgb);
if (data)
{ LOG1( "LOADED<",width,height); LOG1( "LOADED<",temp,found);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, data);
// glGenerateMipmap(GL_TEXTURE_2D);
}
else LOG1( "Failed to load texture","","");
stbi_image_free(data); LOG1("load_map","ID>",texture)
}
GLenum err =glGetError(); LOG1("load_map","error",err)
return texture;
}
LOG1 只是记录助手