GL_INVALID_OPERATION是OpenGL一个很诡异的错误代码,不知道到底是什么引起的无效操作。
即使在调用glDrawElements和glDrawArrays的时候有机会遇到,也不容易确定到底是哪个状态出错。
这里有一种情况可以间接的触发这个错误,并且会产生蝴蝶效应,让程序在后续的执行中产生更诡异不容易定位的错误。
texture + shader + glDrawElements/glDrawArrays
即在shader中使用texture绘制物体。
如果为shader中sampler设置的location位置与glActiveTexture不一致,就会触发glDrawElements操作失败。
另外,如果shader中定义了并使用了多个sampler,即使在某种条件下没有用到,也需要给他设置个值。