GLES中attribute中默认位置

gles程序遇到了一个在Windows 10 UHD630 下能正确运行却在 macOS 10.15.7 Iris 645却效果不对的问题。macOS下 OpenGL不能抓帧分析,经过了一番努力才发现了问题所在。

问题在于vertex shader中有好几个attribute, 在glVertexAttribPointer()按照了声明顺序默认了他们的索引。实际上 macOS 下attribute的默认顺序可能是倒过来了。使用了glGetAttribLocation()获取实际索引后,显示效果就正常了。

在GL3+的时候习惯了在vs中加上layout强制布局。在GLES中没有layout这回事,习惯性地沿用了以前做法,没想到真的出了问题