删除黑色背景表格纹理OpenGL

问题描述

我正在做一个小项目,它是一个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 (将#修改为@)