OpenGL Anistroping过滤无法按预期工作

时间:2014-05-21 11:45:39

标签: android opengl-es

我正在尝试检测并且如果支持 - 在我的OpenGL ES 1.1游戏中启用GL_TEXTURE_MAX_ANISOTROPY_EXT。设备报告支持扩展,返回适当的最大anistropic级别,但当我尝试启用它时,我得到GL_INVALID_ENUM。

以下是我现在使用的代码:

if(GLES11.glGetString(GLES11.GL_EXTENSIONS).contains("GL_EXT_texture_filter_anisotropic"))
{
    System.out.println("will use GL_EXT_texture_filter_anisotropic");
    GLES11.glGetError();//clean any prevous errors
    GLES11.glTexParameteri(GLES11.GL_TEXTURE_2D, GLES11Ext.GL_TEXTURE_MAX_ANISOTROPY_EXT, GetMaxAnisotropy());
    int err = GLES11.glGetError();
    System.out.println("error : "+err);//<- prints 1280 (GL_INVALID_ENUM)
}

以下是我获得最大支持级别的方法

private int GetMaxAnisotropy()
{
    int[] maxAnisotropy = new int[1];

    GLES11.glGetIntegerv(GLES11Ext.GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, maxAnisotropy, 0);
    System.out.println("max: "+maxAnisotropy[0]);//<-- prints 16
    return maxAnisotropy[0];
}

任何想法可能是导致此问题的原因?

以下是logcat的输出:

05-21 13:42:03.070: I/System.out(14110): error : 1280
05-21 13:42:03.070: I/System.out(14110): will use GL_EXT_texture_filter_anisotropic
05-21 13:42:03.070: I/System.out(14110): maxAnisotropy: 16.0
05-21 13:42:03.070: E/Adreno-ES11(14110): <qglDrvAPI_glTexParameterfv:75>: GL_INVALID_ENUM

0 个答案:

没有答案