我正在制作一个 89 帧 png 序列的动画,该序列已通过每 512 x 512 帧放置两帧而减半。但我有主要的图像质量问题(有损)
有没有人知道制作 89 帧动画的好方法,而不会降低质量或占用处理器?
一切顺利。
我正在制作一个 89 帧 png 序列的动画,该序列已通过每 512 x 512 帧放置两帧而减半。但我有主要的图像质量问题(有损)
有没有人知道制作 89 帧动画的好方法,而不会降低质量或占用处理器?
一切顺利。
PVRTC 肯定会让您的图像看起来有损,但有一些方法可以解决这个问题。使用纹理图集会有所帮助,因为 PVRTC 通常最会弄乱图像的边缘,并且会导致透明度问题。我还会尝试关闭您拥有的任何 mipmap 过滤器(最近和线性过滤器,但尤其是最近,当与 PVRTC 结合使用时,可以使它看起来更加模糊)并尝试打开一个线性纹理过滤器,它将混合所有内容,从而使损失不那么明显,并且看起来只是稍微模糊。您还可以保存比绘制它们更大的图像(即使用 PVRTC 压缩的 512x512 图像,但将其绘制为 256x256)。2BPP PVRTC 将导致纹理占用 RGBA 4444 的 1/8 内存,因此即使增加这样的大小(占用 4 倍的内存)也会为您节省 2 倍。但是,如果您只是使用 4BPP,那么如果您需要将图像大小调整为两倍,则最好使用 RGBA 4444。
对于需要更详细的较大图像,PVRTC 通常不是一个好策略。对于图标等,您可以看到显着的节省,特别是因为您可以将它们画得更小。
Mipmap 是这样制作的(不要这样做):
glGenerateMipmapOES(
GL_TEXTURE_2D
);
您可以像这样打开线性纹理过滤器:
glTexParameteri(
GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR
);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR
);
您也绝对不想这样做:
glTexParameteri(
GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR
);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR
);
我正在使用 cocos2d 做一个类似的项目。如果您为每个纹理制作一张图像,或者可能尝试 RGBA 4444 格式,您的图像可能看起来会更好。
但是如果你确实使用 cocos2d,它就很简单了。一旦你下载了 cocos2d,就会有非常好的示例代码。