Ios opengl es 2.0中的GL_苹果_剪辑_距离

Ios opengl es 2.0中的GL_苹果_剪辑_距离,ios,opengl-es,glsl,opengl-es-2.0,Ios,Opengl Es,Glsl,Opengl Es 2.0,有关GL_APPLE_clip_distance的文档说明,它在ES2.0和ES3.0上都受支持。我正在尝试让它在不支持ES3.0的设备上工作 着色器文件在文件顶部具有#扩展名 #extension GL_APPLE_clip_distance : require 着色器文件编译时不会出现错误,表明它们在语法方面没有问题。我已经加载了一个ES2上下文。但是,第一次尝试启用剪辑平面时,如中所示 glEnable ( GL_CLIP_DISTANCE0_APPLE ) 所有后续的glDrawAr

有关GL_APPLE_clip_distance的文档说明,它在ES2.0和ES3.0上都受支持。我正在尝试让它在不支持ES3.0的设备上工作

着色器文件在文件顶部具有#扩展名

#extension GL_APPLE_clip_distance : require
着色器文件编译时不会出现错误,表明它们在语法方面没有问题。我已经加载了一个ES2上下文。但是,第一次尝试启用剪辑平面时,如中所示

glEnable ( GL_CLIP_DISTANCE0_APPLE )
所有后续的glDrawArray调用都会失败,并出现错误。指定的操作对于当前OpenGL状态无效。GLKView呈现黑色,可能是因为所有的绘制调用现在都失败了

有趣的是,即使我禁用了状态

glDisable ( GL_CLIP_DISTANCE0_APPLE )
所有后续的draw调用仍将继续失败;。因此,第一次调用glEnable(GL_CLIP_distance 0_APPLE)会触发一些无法恢复的状态,这些状态无法撤消


任何关于解决方法的提示/建议都非常好

我花了几天的时间研究这个问题,在最终发布到stackoverflow后仅仅半个小时,它就得到了修复。以下是答案,以防对其他人也有帮助

我改变了浮动精度从低到高。不知何故,lowp在3.0版中效果很好,但在ES2.0版中效果不太好

varying lowp float gl_ClipDistance[4];
改为:

varying highp float gl_ClipDistance[4];