glBindTexture - returns 参数错误

glBindTexture - returns argument error

我正在从事增强现实项目。因此,用户应该使用网络摄像头,并在该帧上绘制一个立方体来查看捕获的视频。 这就是我卡住的地方,当我尝试使用 glBindTexture(GL_TEXTURE_2D,texture_background) 方法时,出现错误: ( ArgumentError:参数 2::错误类型 GLUT 使用 (),{} 显示回调失败:返回 None 参数 2::错误类型 ) 我完全被困住了,不知道该怎么办。该项目在 Python 2.7 中完成,我使用的是 opencv 和 PyOpenGl 3.1.0.

您可以在此找到代码 link :click here 提前致谢。

有趣的错误!所以我玩弄了你的源代码(顺便说一下,将来你应该直接将代码添加到你的问题中而不是作为单独的 link),问题实际上只是变量范围之一,而不是过剩或 opengl 的使用。问题是您的 texture_background 变量在 _draw_scene() 函数的范围内不存在。要验证这一点,只需尝试在 _draw_scene() 函数中调用 print texture_background,您会发现它是 returns None 而不是所需的整数纹理标识符。

简单的 hack-y 解决方案是在使用之前调用 global texture_background 在您的 _handle_input() 函数.您还需要在程序的主要范围内定义 texture_background = None(在 ##FOR CUBE FROM OPENGL 注释下方)。相同的全局注释适用于 x_axisz_axis

话虽如此,该解决方案并不是那么好。 GLUT 要求的刚性结构具有所有这些预定义 glut* 函数,因此很难按照您在初始化应用程序方面可能希望的方式构建代码。我建议,如果您不是被迫使用 GLUT,请使用更灵活的替代方案,例如 pygame、pysdl2 或 pyqt,来创建您的上下文。