我正在使用两种大小的纹理 (128x128) 的幂,并将它的一小部分绘制到多边形上(将其用作纹理图集)。我设置了以下内容:
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_NEAREST);
然而,结果是仍然模糊在一起的纹理。看起来它正在使用 GL_LINEAR 。
任何想法为什么纹理仍然会变得模糊而不是像素化?
这是一个例子:
字母 F 是图像的一部分。这里使用 128px、256px、512px 和 1024px 的图像绘制。如您所见,它变得更好,但即使在 1024px 时,它仍然会稍微混合边缘。我应该能够使用 128 像素的图像并使用 GL_NEAREST 将其放大并使其具有清晰的边缘。是什么导致它画成这样?
编辑
我已更新应用程序以使用 GLES20,但问题仍然存在。在绑定纹理之后和调用 drawArrays 之前,我尝试使用以下内容,以确保我使用的是 GL_NEAREST:
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST);
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_NEAREST);
编辑 2
即使不使用地图集,也会出现问题。我在一个四边形上放了一个 8px x 8px png 的图片,结果一团糟。OpenGL ES 2.0 不使用 GL_NEAREST 是否有某些原因?
结果如下: