我想使用需要的GLSL ES着色器

#if GL_OES_standard_derivatives
#   extension GL_OES_standard_derivatives : enable
#endif

在我的libgdx(Android / iOS)应用中。如何确定设备是否支持此功能?

最佳答案

OpenGL ES具有glGetString(GL_EXTENSIONS),该函数返回以空格分隔的列表。如果可以在Android上访问Java,则可以使用GLES10类的静态方法,如下所示:

bool is_supported()
{
    return GLES10.glGetString(GLES10.GL_EXTENSIONS).contains("GL_OES_standard_derivatives");
}

如果您使用的是GLES 2.0或更高版本,请改用GLES20。

在iOS上,如果您有权访问C,则可以执行以下操作:
bool is_supported()
{
    return strstr(glGetString(GL_EXTENSIONS), "GL_OES_standard_derivatives") != NULL;
}

09-30 18:15