pygame OpenGL窗口在Mac OS X 10.6,Python 2.7上没有刷新

时间:2010-11-12 05:36:03

标签: python macos osx-snow-leopard sdl pygame

我在pygame mailing list上发布了这个帖子,但也许这里有人会有答案。我无法确定这是一个pygame问题还是SDL问题,真的。

基本上,我有一些使用PyOpenGL和pygame来渲染基本动画的代码。它在Linux下工作正常,但出于某种原因,我的Mac上的pygame窗口不会刷新,除非我在窗口外单击“非聚焦”,此时它们刷新一次。

要安装SDL和pygame,我按照instructions here进行操作。我应该注意到

  • 二维pygame示例(例如pygame.examples.aliens)可以正常工作,而像pygame.examples.glcube这样的3D示例则与我自己的代码存在相同的问题。
  • PyOpenGL演示工作正常,所以我假设问题不存在。
  • 我也看到这个打印到控制台:

    2010-11-12 00:31:51.328 python[75402:903] *** __NSAutoreleaseNoPool(): 
    Object 0x101da6570 of class NSCFData autoreleased with no pool in 
    place - just leaking
    

    任何人都知道这意味着什么?

2 个答案:

答案 0 :(得分:1)

事实证明,当我按Ctrl + C基于pygame的应用程序时,会出现某种OS X驱动程序故障,唯一的解决办法就是重启。

答案 1 :(得分:0)

我担心它不是OpenGL问题。我在Windows 7和MACOSX 10.4.11中都有刷新问题。出于一个奇怪的原因,Linux上没有刷新问题。

我解决这个问题的方法是检测“非聚焦”事件,因为窗口只有在未聚焦且窗口在其前面传递时才有刷新问题。一旦我检测到“无焦点”和/或“焦点”,即使我发布了整个窗口的重绘。

顺便说一句,我没有使用任何OpenGL绑定或技术,只是标准的pygame函数,特别是更新函数。