问题描述
我正在做一个小项目,它是一个2D游戏。我的问题是渲染纹理时,它的背景是黑色的。我用stbi加载了纹理数据,并在glTexImage2D中将格式设置为GL_RGBA。从技术上讲,该图像没有背景,它是PNG格式。如何删除背景?
有用于加载纹理的代码。
int width,height;
int comp;
unsigned char* imageData = stbi_load(filePath.c_str(),&width,&height,&comp,4);
if ( !imageData ) {
fmt::print("Fail load image: {}",filePath);
return false;
}
glGenTextures(1,&textureID);
glBindTexture(GL_TEXTURE_2D,textureID);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_BORDER);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_BORDER);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D,GL_RGBA,width,height,GL_UNSIGNED_BYTE,imageData);
glGenerateMipmap(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D,0);
stbi_image_free(imageData);
PS:很抱歉,英语为英语。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)