我想使用 FreeType 用 OpenGL 绘制文本并使其更清晰,我为每个 mipmap 迭代从 FreeType 生成字体纹理。除了一件事,一切都很好。当我这样做时:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
Run Code Online (Sandbox Code Playgroud)
OpenGL 根据文本的大小选择最近的 mipmap,但如果可用大小是 16 和 32,而我想要 22,它会选择 16,使它看起来很糟糕。有没有办法设置它,以便它始终选择最近的较大 mipmap?
我知道我可以在渲染文本以手动设置 mipmap 级别时执行此操作:
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_LOD, (int) log2(1/scale));
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_LOD, (int) log2(1/scale));
Run Code Online (Sandbox Code Playgroud)
但这真的有效吗?这不是完全不需要使用 mipmaps 吗?我可以制作不同的纹理并根据大小选择一种。那么有没有更好的方法来实现这一点?
你尝试过GL_LINEAR_MIPMAP_LINEAR作为GL_TEXTURE_MIN_FILTER参数吗?它应该在两个最近的 mipmap 之间混合。这可能会改善外观。
另外,您可以尝试使用texture_lod_bias此处记录的扩展:
http://www.opengl.org/registry/specs/EXT/texture_lod_bias.txt
| 归档时间: |
|
| 查看次数: |
1089 次 |
| 最近记录: |