我在 opengl 中加载纹理时遇到问题。
我正在Mac上编写cpp并且很难。我不明白为什么我有这些丑陋的纹理。我正在使用 stb_image.c 加载纹理,但它似乎无法正常工作。
这是我的代码:
unsigned int TextureHelper::loadTexture(std::string pathToTexture){
std::cout << "Loading " << pathToTexture << std::endl;
unsigned int img;
glGenTextures(1,&img);
glBindTexture(GL_TEXTURE_2D,img);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
/* Load Texture with stb_image */
int width, height, n;
unsigned char * data = stbi_load(pathToTexture.c_str(), &width, &height, &n, 4);
if(!data){
printf("Error, while loading texture: %s\n", stbi_failure_reason());
}else{
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
stbi_image_free(data);
std::cout << "returning " << pathToTexture << " = " << img << "x" << width << "x" << height << "x" << n << std::endl;
return img;
}
std::cout << "returning " << pathToTexture << " = " << 0 << std::endl;
return 0;
}
我试过 GL_RGBA、GL_RGBA8、GL_RGB、GL_RGBA ..但似乎没有任何效果。我错过了什么吗?
至于 gl 上下文,我使用的是 GLFW 和苹果 gl3.h
tex 的格式是 .png
纹理来了:)
更新:解决 了,伙计们。我已经解决了。抱歉发帖;)这有点“尴尬”^^...那里的代码工作正常。我的问题是,我忘记设置 glfw 颜色位和深度...
添加这个
glfwWindowHint(GLFW_RED_BITS, 8);
glfwWindowHint(GLFW_GREEN_BITS, 8);
glfwWindowHint(GLFW_BLUE_BITS, 8);
glfwWindowHint(GLFW_ALPHA_BITS, 8);
glfwWindowHint(GLFW_DEPTH_BITS, 32);
在我的窗口创建解决问题之前。