【问题标题】:Why do OpenGL-ES resized images look pixelated?为什么 OpenGL-ES 调整大小的图像看起来像素化?
【发布时间】:2012-05-29 05:11:11
【问题描述】:

我正在使用 OpenGL ES 为 Android 开发相当简单的 2D 游戏。我希望它可以在市场上几乎所有的设备上运行。我面临的问题是,当我映射我使用的纹理时。如果我要映射的图像与其目标对象的大小不同,则图像质量会降低(即使图像的大小大于对象),它也会被像素化。我想要非常清晰的图像,接收它们的唯一方法是使用相同尺寸的纹理和对象。但在这种情况下,我需要 4,5 个纹理来表示具有不同尺寸的同一图像,以支持足够的屏幕分辨率。我正在使用 PNG 图像和以下 GL 方法:

glClear(GL10.GL_COLOR_BUFFER_BIT);
glEnable(GL10.GL_TEXTURE_2D);
glEnable(GL10.GL_BLEND);
glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
//drawing happens here
glDisable(GL10.GL_BLEND);

创建这么多图像对我来说没有问题,但是游戏的大小会变大。是我做错了什么,还是只是 OpenGL 无法像 Photoshop 一样调整图像大小?

【问题讨论】:

    标签: android opengl-es


    【解决方案1】:

    您是否尝试过其他采样选项,例如 GL_NEAREST 或 GL_LINEAR? (见glTexParameteri)。

    我不认为这是 opengl 的错,但是当您显示的纹理不是其原始分辨率(或它的偶数倍)时,总会有一些准确性的损失(因为图像必须是在非像素边界重采样)。 GL_LINEAR 可能会减轻一些像素化的外观,但会以略微模糊为代价,这可能会或可能不会被注意到。

    【讨论】:

    • 谢谢,我用的是 GL_NEAREST,现在我把它改成了 GL_LINEAR,一切都很完美,非常感谢
    猜你喜欢
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多