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