【问题标题】:Android OpenGL mag filter on GL_NEAREST, small texture still blurryGL_NEAREST上的Android OpenGL mag过滤器,小纹理仍然模糊
【发布时间】:2013-03-28 21:49:29
【问题描述】:

我正在使用两个大小的纹理 (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 的图像绘制。如您所见,它变得更好,但即使在 1024 像素时,它仍然会稍微混合边缘。 我应该能够使用 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 是否有某些原因?

结果如下:

【问题讨论】:

    标签: java android opengl-es textures


    【解决方案1】:

    我认为glTexParameterf 应该是glTexParameteri。您将枚举作为最终参数传递,而不是浮点数。

    您是否也在使用 glGetError 检查错误?

    还要确保为每个要进行线性采样的纹理设置它。它的状态是每个纹理,而不是全局。

    【讨论】:

    • 感谢您的建议。我尝试切换到glTexParameteri,用glGetError到处检查,每次创建纹理时我都在设置纹理设置。现在我决定从 GL10 切换到 GLES20;全面检修。所以现在我已经切换到将我的头发拉到我的自定义矩阵处理程序类和着色器/渲染器类上。谢谢!
    • Welp,我已经完全转换到 GLES20,仍然遇到同样的问题!我正在使用 glTexParameteri 和 GL_NEAREST。我没有遇到任何 gl 错误。
    【解决方案2】:

    我终于明白了!!!!

    这是我加载资源的方式。

    我从这里改变了:

    Bitmap bitmap = BitmapFactory.decodeResource(GLRenderer.context.getResources(), textureId);
    

    到这里:

    InputStream is = GLRenderer.context.getResources().openRawResource(textureId);
    Bitmap bitmap;
    try {
        bitmap = BitmapFactory.decodeStream(is);
    } finally {
        try {
            is.close();
        } catch(IOException e) {
            // Ignore.
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多