GL_INVALID_OPERATION是OpenGL一個很詭異的錯誤代碼,不知道到底是什么引起的無效操作。
即使在調用glDrawElements和glDrawArrays的時候有機會遇到,也不容易確定到底是哪個狀態出錯。
這里有一種情況可以間接的觸發這個錯誤,并且會產生蝴蝶效應,讓程序在后續的執行中產生更詭異不容易定位的錯誤。
texture + shader + glDrawElements/glDrawArrays
即在shader中使用texture繪制物體。
如果為shader中sampler設置的location位置與glActiveTexture不一致,就會觸發glDrawElements操作失敗。
另外,如果shader中定義了并使用了多個sampler,即使在某種條件下沒有用到,也需要給他設置個值。