OpenGL Error 存儲在一個隊列中,直到該錯誤被處理。因此,如果你不定期的檢測錯誤,你將不會知道某個函數某個函數的調用觸發了錯誤。因此,錯誤檢測應該定期檢測,確保知道錯誤的詳細信息。
獲取隊列中下一個 OpenGL Error,並從隊列中移除。如果返回 GL_NO_ERROR 則該隊列爲空。
GLenum glGetError()
若獲取所有的 OpenGL Error
for(GLenum err; (err = glGetError()) != GL_NO_ERROR;)
{
//Process/log the error.
}
所有的返回值有:
GL_NO_ERROR :(0)當前無錯誤值
GL_INVALID_ENUM :(1280)僅當使用非法枚舉參數時,如果使用該參數有指定環境,則返回 GL_INVALID_OPERATION
GL_INVALID_VALUE :(1281)僅當使用非法值參數時,如果使用該參數有指定環境,則返回 GL_INVALID_OPERATION
GL_INVALID_OPERATION :(1282)命令的狀態集合對於指定的參數非法。
GL_STACK_OVERFLOW :(1283)壓棧操作超出堆棧大小。
GL_STACK_UNDERFLOW :(1284)出棧操作達到堆棧底部。
GL_OUT_OF_MEMORY :(1285)不能分配足夠內存時。
GL_INVALID_FRAMEBUFFER_OPERATION :(1286)當操作未準備好的真緩存時。
GL_CONTEXT_LOST :(1287)由於顯卡重置導致 OpenGL context 丟失。