Android OpenGL各向异性过滤未按预期工作
我正在尝试在OpenGL ES 1.1游戏中检测并启用GL_纹理_最大_各向异性_EXT。设备报告支持扩展,并返回正确的最大各向异性级别,但当我尝试启用它时,我得到GL_INVALID_ENUM 下面是我现在使用的代码:Android OpenGL各向异性过滤未按预期工作,android,opengl-es,Android,Opengl Es,我正在尝试在OpenGL ES 1.1游戏中检测并启用GL_纹理_最大_各向异性_EXT。设备报告支持扩展,并返回正确的最大各向异性级别,但当我尝试启用它时,我得到GL_INVALID_ENUM 下面是我现在使用的代码: if(GLES11.glGetString(GLES11.GL_EXTENSIONS).contains("GL_EXT_texture_filter_anisotropic")) { System.out.println("will use GL_EXT_textur
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)
}
if(GLES11.glGetString(GLES11.GL\u扩展名)。包含(“GL\u EXT\u texture\u filter\u各向异性”))
{
System.out.println(“将使用GL_EXT_texture_filter_各向异性”);
GLES11.glGetError();//清除所有以前的错误
GLES11.glTexParameteri(GLES11.GL_TEXTURE_2D,GLES11Ext.GL_TEXTURE_MAX_各向异性_EXT,getMax各向异性());
int err=GLES11.glGetError();
System.out.println(“错误:“+err”);//根据,各向异性值是一个浮点值。您是否尝试过使用TexParameterf
设置它?是的,浮点和int调用都会给出相同的结果。我假设您在进行该调用时实际有一个2D纹理绑定?各向异性是ES中的每个纹理对象…在桌面GL中,您可以为每个采样器对象设置它。是的,纹理是bo嗯,如果我对这个电话进行评论,一切都会按预期进行。
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];
}
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