Python opengl中的窗口崩溃和部分渲染
执行时,并非所有行都打印在窗口上。此外,在函数showScreen中的glutSwapBuffers()之后,窗口崩溃。这是一张图片: 我在glutSwapBuffers()之后的函数showScreen中遇到此错误Python opengl中的窗口崩溃和部分渲染,python,opengl,glut,pyopengl,Python,Opengl,Glut,Pyopengl,执行时,并非所有行都打印在窗口上。此外,在函数showScreen中的glutSwapBuffers()之后,窗口崩溃。这是一张图片: 我在glutSwapBuffers()之后的函数showScreen中遇到此错误 这个错误意味着什么以及如何修复它?这个错误几乎告诉你问题出在哪里。您没有提供显示功能。这就是你写的: glutDisplayFunc(showScreen([300, 400], stringa, x, len(stringa)-1, 0)) 这样做的目的是调用函数showScr
这个错误意味着什么以及如何修复它?这个错误几乎告诉你问题出在哪里。您没有提供显示功能。这就是你写的:
glutDisplayFunc(showScreen([300, 400], stringa, x, len(stringa)-1, 0))
这样做的目的是调用函数showScreen
,然后将调用返回的内容传递给glutDisplayFunction
。您的showScreen
函数不会返回任何内容
这不是你想要的。您必须使用lambda
捕获参数以显示屏幕,或者使用辅助功能。例如,这个
glutDisplayFunc(lambda: showScreen([300, 400], stringa, x, len(stringa)-1, 0))
然而,考虑到您正在通过视口和其他参数来显示屏幕,这是非常不可能的,这确实是您想要的 错误基本上是在告诉您问题所在。您没有提供显示功能。这就是你写的:
glutDisplayFunc(showScreen([300, 400], stringa, x, len(stringa)-1, 0))
这样做的目的是调用函数showScreen
,然后将调用返回的内容传递给glutDisplayFunction
。您的showScreen
函数不会返回任何内容
这不是你想要的。您必须使用lambda
捕获参数以显示屏幕,或者使用辅助功能。例如,这个
glutDisplayFunc(lambda: showScreen([300, 400], stringa, x, len(stringa)-1, 0))
然而,考虑到您正在通过视口和其他参数来显示屏幕,这是非常不可能的,这确实是您想要的 错误意味着您调用了
glutDisplayFunc
,但没有提供函数作为第一个参数
我知道它看起来和你一样,但仔细看看这句话:
glutDisplayFunc(显示屏幕(…)
下面是发生的情况:
None
glutDisplayFunc(无)
None
glutDisplayFunc(显示屏幕)
glutIdleFunc(显示屏幕)
现在仍然存在一个问题,因为glut不会向showScreen
提供任何参数。它将这样运行:showScreen()
这是一个问题,因为showScreen函数需要几个参数。但它实际上需要定义为none:def showScreen():
这意味着您必须以另一种方式提供这些变量
DatenWalf建议您创建一个新函数,该函数不接受任何参数,只运行showScreen(…)
def doShowScreen():
显示屏幕(显示屏幕([300400],stringa,x,len(stringa)-1,0))
glutDisplayFunc(显示屏幕)
glutIdleFunc(显示屏幕)
该错误表示您调用了glutDisplayFunc
,但没有提供函数作为第一个参数
我知道它看起来和你一样,但仔细看看这句话:
glutDisplayFunc(显示屏幕(…)
下面是发生的情况:
None
glutDisplayFunc(无)
None
glutDisplayFunc(显示屏幕)
glutIdleFunc(显示屏幕)
现在仍然存在一个问题,因为glut不会向showScreen
提供任何参数。它将这样运行:showScreen()
这是一个问题,因为showScreen函数需要几个参数。但它实际上需要定义为none:def showScreen():
这意味着您必须以另一种方式提供这些变量
DatenWalf建议您创建一个新函数,该函数不接受任何参数,只运行showScreen(…)
def doShowScreen():
显示屏幕(显示屏幕([300400],stringa,x,len(stringa)-1,0))
glutDisplayFunc(显示屏幕)
glutIdleFunc(显示屏幕)
ok,我将参数转换为全局变量,这修复了崩溃。但是,仍然只有一些线条显示在窗口上,如图所示。我对龙的曲线不是很熟悉,你确定你的视口捕捉到了整个图像吗?展开视口以包含负坐标时会发生什么情况?(-500,-500,1000,1000)感谢我注意到viewport和glOrtho()的设置不正确,我将它们的参数更改为glViewport(0,0,1200,900)(用于分辨率)和glOrtho(0.0,1200,0.0,900,0.0,1.0)非常相同。好的,我将参数转换为全局变量,这修复了崩溃。但是,仍然只有一些线条显示在窗口上,如图所示。我对龙的曲线不是很熟悉,你确定你的视口捕捉到了整个图像吗?展开视口以包含负坐标时会发生什么情况?(-500,-500,1000,1000)感谢我注意到viewport和glOrtho()的设置不正确,我将它们的args更改为glViewport(0,0,1200,900)(用于分辨率)和glOrtho(0.0,1200,0.0,900,0.0,1.0)非常相同。