我正在尝试检测并且如果支持 - 在我的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