首页 > 解决方案 > OpenGL:位图字体的mipmap生成使其在缩小时变暗

问题描述

我正在从 TGA 纹理加载字体。gluBuild2DMipmaps()我使用该函数生成 mipmap 。

当字体有一定大小时,它看起来非常好。但是当它变小时,每当它达到新的 mipmap 级别时,它就会变得越来越暗。

这就是我创建纹理的方式:

void TgaLoader::bindTexture(unsigned int* texture)
{
    tImageTGA *pBitMap = m_tgaImage;

    if(pBitMap == 0)
    {
        return;
    }

    glGenTextures(1, texture);
    glBindTexture(GL_TEXTURE_2D, *texture);

    gluBuild2DMipmaps(GL_TEXTURE_2D,
                        pBitMap->channels,
                        pBitMap->size_x,
                        pBitMap->size_y,
                        textureType,
                        GL_UNSIGNED_BYTE,
                        pBitMap->data);


    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);
    glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
}   

这使文本看起来像这样(它应该是白色的):

在此处输入图像描述

隐约可见。

如果我将其更改GL_TEXTURE_MIN_FILTER为基本上忽略 mipmap(GL_LINEAR例如使用),它看起来像这样:

在此处输入图像描述

我尝试了不同的过滤器选项,也尝试了使用glGenerateMipmap()而不是gluBuild2DMipmaps(),但我总是得到相同的结果。

代码有什么问题?

标签: openglfontsrenderingmipmaps

解决方案


推荐阅读