Java 尽管GL_TEXTURE2D是有效的,为什么glBindTexture()会给我错误GL_INVALID_ENUM?

Java 尽管GL_TEXTURE2D是有效的,为什么glBindTexture()会给我错误GL_INVALID_ENUM?,java,opengl-es-2.0,Java,Opengl Es 2.0,OpenGL的glBindTexture()函数的 […]必须是 GL_纹理_2D或 GL_纹理_立方体_贴图 即使我这样调用函数: GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, texture); 它给了我GL_INVALID_ENUM错误 我已经尝试调用glEnable(GL\u TEXTURE\u 2D)函数,但没有成功 是什么原因造成的?您是否完全确定错误来自此呼叫?在进行此调用之前调用glGetError()时,它返回GL\u NO\u ERR

OpenGL的
glBindTexture()
函数的

[…]必须是 GL_纹理_2D或 GL_纹理_立方体_贴图

即使我这样调用函数:

GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, texture);
它给了我GL_INVALID_ENUM错误

我已经尝试调用
glEnable(GL\u TEXTURE\u 2D)
函数,但没有成功


是什么原因造成的?

您是否完全确定错误来自此呼叫?在进行此调用之前调用
glGetError()
时,它返回
GL\u NO\u ERROR
?只有在调用之后,它才会返回
GL\u INVALID\u ENUM
?对于这个明显的问题,很抱歉,但是人们调用
glGetError()
并假设返回的错误是由前一个调用触发的,而错误状态实际上是由前一个调用设置的,这种情况发生得很意外。@Reto Koradi感谢您的回答。“我来核实一下。”雷托科拉迪,你的假设是对的。该错误实际上是在该语句之前生成的。但是我不知道它是从哪里来的。将
glGetError()
调用扩展到您的代码周围,然后查看第一个错误是在哪里检测到的。您可以使用类似于手动二进制搜索的方法。一个是您在代码中找到一个没有错误的位置,另一个是后来发现错误的位置,您将另一个
glGetError()
放置在它们之间的中间位置,并以这种方式逐渐缩小范围,直到将其缩小到单个调用为止。