图像OpenGL周围的小黑轮廓

xvw2m8pv  于 2022-10-18  发布在  其他
关注(0)|答案(1)|浏览(188)

我有这样的图像:sprite
我正在将纹理(.png文件)加载到我正在使用的视区中

// enable blending
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

为了去掉黑色的Alpha通道,然而问题是,精灵周围仍然有一条小黑线,我不确定它是否在图像中可见。以下是我对纹理使用的代码:

// generate and bind the texture
unsigned int texture;
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);

// configure the texture
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

// flip the image vertically so texture isn't upside down
stbi_set_flip_vertically_on_load(true);

// load an image while getting the width, height, and number of color channels
int width, height, nrChannels;
unsigned char* data = stbi_load(imageFile, &width, &height, &nrChannels, 0);

// if we have the image
if (data)
{
    // create texture and mipmap for the texture
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
    glGenerateMipmap(GL_TEXTURE_2D);
}
else // we don't have the image
{
    // print
    std::cout << "Failed to load texture" << std::endl;
}
// free the image data and delete it
stbi_image_free(data);
slhcrj9b

slhcrj9b1#

谢谢你的帮助,“谢夫的猫”。我猜这就是它应该出现的方式,它看起来确实像是有一条黑线,我把它放到其他一些程序中,它做了同样的事情。这只是它应该出现的方式大多数细节更多的精灵不应该以这种方式出现。

相关问题