我正致力于增强现实项目。因此,用户应该使用网络摄像头,并使用在该框架上绘制的立方体来查看捕获的视频。 这就是我卡住的地方,当我尝试使用glBindTexture(GL_TEXTURE_2D,texture_background)方法时,我得到错误: ( ArgumentError:参数2 ::错误的类型 GLUT使用(),{}显示回调失败:返回无参数2 ::错误类型 ) 我完全陷入困境,不知道该怎么做。该项目在Python 2.7中完成,使用的是opencv和PyOpenGl 3.1.0。
您可以在此链接上找到代码:click here 提前谢谢。
答案 0 :(得分:0)
有趣的错误!所以我玩了你的源代码(顺便说一句,将来你可能只是将代码直接添加到你的问题而不是单独的链接),问题实际上只是变量范围之一,而不是过剩或opengl用法。问题是texture_background
变量在_draw_scene()
函数的范围内不存在。要验证这一点,只需尝试在print texture_background
函数中调用_draw_scene()
,您就会发现它返回None
而不是所需的整数纹理标识符。
简单的黑客解决方案是在 global texture_background
功能中使用之前调用_handle_input()
。您还需要在程序的主要范围内(texture_background = None
评论下方)定义##FOR CUBE FROM OPENGL
。相同的全球评论适用于x_axis
和z_axis
。
话虽这么说,解决方案并不是那么好。 GLUT与所有这些预定义glut*
函数所需的刚性结构使得在初始化应用程序时难以按照您希望的方式构建代码。如果您不被迫使用GLUT,我建议使用更灵活的替代方法,例如pygame,pysdl2或pyqt,来创建您的上下文。