gpt4 book ai didi

android - 如何手动创建 mipmap?

转载 作者:行者123 更新时间:2023-11-29 15:19:28 25 4
gpt4 key购买 nike

我对使用这行代码自动生成的 mipmap 获得的质量不完全满意:

glTexParameterf(GL10.GL_TEXTURE_2D, GL11.GL_GENERATE_MIPMAP, GL10.GL_TRUE);

我想为游戏中使用的每个纹理创建(使用 Gimp)各种缩放版本的纹理。例如,对于球的纹理,我将拥有:

ball256.png 256x256 像素

ball128.png 128x128 像素

ball64.png 64x64 像素

ball32.png 32x32 像素

ball16.png 16x16 像素

1.你认为这是个好主意吗?

2.如何从所有这些图像中创建一个 mipmapped 纹理?

最佳答案

这不仅是个好主意,而且还是一个非常标准的做法(尤其是在 Direct3D 中)!

当您生成 mipmap 时,OpenGL 实现倾向于使用标准框过滤器(均匀加权)。在图像编辑套件中对纹理进行下采样时,您可以使用漂亮的帐篷拟合器(双线性)甚至三次样条(双三次)。就个人而言,我更喜欢 lanczos 过滤器,因为这将离线完成。

您可能已经意识到这一点,但 Direct3D 有一种称为 DDS(直接绘制表面)的标准纹理格式,它允许您在内容创建时而不是加载时预计算和预压缩每个 mipmap 级别。这减少了压缩纹理加载时间,更重要的是允许在对每个 LOD 进行下采样期间进行更高质量的样本重建。 OpenGL 也有做同样事情的标准化格式:KTX .我提到 Direct3D 是因为尽管 OpenGL 有一个标准化的格式,但似乎很少有人知道它;大多数人更熟悉 DDS。

如果您不想使用我上面提到的标准化格式,您始终可以通过调用 glTexImage2D (..., n, ...) 其中 n 是 LOD(0 是最高分辨率的细节级别)。当您创建纹理时,您会在每个 LOD 的循环中执行此操作,这实际上是 gluBuild2DMipmaps (...) 之类的工作方式。

关于android - 如何手动创建 mipmap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19936494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com