1

我正在使用 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 那样调整图像的大小?

4

1 回答 1

4

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

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

于 2012-05-28T20:10:30.637 回答