Van*_*Dir 1 android textures opengl-es
我对使用这行代码自动生成的mipmap获得的质量不满意:
glTexParameterf(GL10.GL_TEXTURE_2D, GL11.GL_GENERATE_MIPMAP, GL10.GL_TRUE);
Run Code Online (Sandbox Code Playgroud)
我想为我的游戏中使用的每个纹理创建(使用Gimp)我的纹理的各种缩放版本.例如,对于球的纹理,我将:
ball256.png 256x256像素
ball128.png 128x128像素
ball64.png 64x64像素
ball32.png 32x32像素
ball16.png 16x16像素
1.你认为这是一个好主意吗?
2.如何从所有这些图像创建单个mipmap纹理?
生成mipmap时,OpenGL实现倾向于使用标准盒式过滤器(均匀加权).在图像编辑套件中对纹理进行下采样时,您可以使用漂亮的帐篷(双线性)或甚至三次样条(双三次).就个人而言,我更喜欢lanczos过滤器,因为这将是离线完成的.
您可能已经意识到这一点,但Direct3D有一种称为DDS(Direct Draw Surface)的标准纹理格式,它允许您在内容创建时而不是加载时预先压缩每个mipmap级别.这减少了压缩纹理加载时间,并且更重要的是,在下采样到每个LOD期间允许更高质量的样本重建.OpenGL也有一个标准化的格式,可以做同样的事情:KTX.我提出了Direct3D,因为尽管OpenGL具有标准化格式,但似乎很少有人知道它; DDS对大多数人来说更为熟悉.
如果您不想使用我上面提到的标准化格式,您可以随时通过调用glTexImage2D (..., n, ...)其中n是LOD(0是最高分辨率详细程度)来手动加载您的详细级别.在创建纹理时,您可以在每个LOD的循环中执行此操作,这实际上就是这样gluBuild2DMipmaps (...).
| 归档时间: |
|
| 查看次数: |
2510 次 |
| 最近记录: |