Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python opengl中的窗口崩溃和部分渲染_Python_Opengl_Glut_Pyopengl - Fatal编程技术网

Python opengl中的窗口崩溃和部分渲染

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

执行时,并非所有行都打印在窗口上。此外,在函数showScreen中的glutSwapBuffers()之后,窗口崩溃。这是一张图片:

我在glutSwapBuffers()之后的函数showScreen中遇到此错误


这个错误意味着什么以及如何修复它?

这个错误几乎告诉你问题出在哪里。您没有提供显示功能。这就是你写的:

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(显示屏幕(…)

下面是发生的情况:

  • 首先,调用showScreen(…),并返回
    None
  • 此值用作glutDisplayFunc的第一个参数:
    glutDisplayFunc(无)
  • 发生错误的原因是glutDisplayFunc需要一个函数,但得到了
    None
  • 同样的错误也会发生在glutIdleFunc上

    要解决这两个问题,请仅为glutDisplayFunc和glutIdleFunc指定函数名:

    glutDisplayFunc(显示屏幕)
    glutIdleFunc(显示屏幕)
    
    现在仍然存在一个问题,因为glut不会向
    showScreen
    提供任何参数。它将这样运行:
    showScreen()

    这是一个问题,因为showScreen函数需要几个参数。但它实际上需要定义为none:
    def showScreen():
    这意味着您必须以另一种方式提供这些变量

    DatenWalf建议您创建一个新函数,该函数不接受任何参数,只运行
    showScreen(…)

    def doShowScreen():
    显示屏幕(显示屏幕([300400],stringa,x,len(stringa)-1,0))
    glutDisplayFunc(显示屏幕)
    glutIdleFunc(显示屏幕)
    
    该错误表示您调用了
    glutDisplayFunc
    ,但没有提供函数作为第一个参数

    我知道它看起来和你一样,但仔细看看这句话:

    glutDisplayFunc(显示屏幕(…)

    下面是发生的情况:

  • 首先,调用showScreen(…),并返回
    None
  • 此值用作glutDisplayFunc的第一个参数:
    glutDisplayFunc(无)
  • 发生错误的原因是glutDisplayFunc需要一个函数,但得到了
    None
  • 同样的错误也会发生在glutIdleFunc上

    要解决这两个问题,请仅为glutDisplayFunc和glutIdleFunc指定函数名:

    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)非常相同。