我在pygame mailing list上发布了这个帖子,但也许这里有人会有答案。我无法确定这是一个pygame问题还是SDL问题,真的。
基本上,我有一些使用PyOpenGL和pygame来渲染基本动画的代码。它在Linux下工作正常,但出于某种原因,我的Mac上的pygame窗口不会刷新,除非我在窗口外单击“非聚焦”,此时它们刷新一次。
要安装SDL和pygame,我按照instructions here进行操作。我应该注意到
pygame.examples.aliens
)可以正常工作,而像pygame.examples.glcube
这样的3D示例则与我自己的代码存在相同的问题。我也看到这个打印到控制台:
2010-11-12 00:31:51.328 python[75402:903] *** __NSAutoreleaseNoPool():
Object 0x101da6570 of class NSCFData autoreleased with no pool in
place - just leaking
任何人都知道这意味着什么?
答案 0 :(得分:1)
事实证明,当我按Ctrl + C基于pygame的应用程序时,会出现某种OS X驱动程序故障,唯一的解决办法就是重启。
答案 1 :(得分:0)
我担心它不是OpenGL问题。我在Windows 7和MACOSX 10.4.11中都有刷新问题。出于一个奇怪的原因,Linux上没有刷新问题。
我解决这个问题的方法是检测“非聚焦”事件,因为窗口只有在未聚焦且窗口在其前面传递时才有刷新问题。一旦我检测到“无焦点”和/或“焦点”,即使我发布了整个窗口的重绘。
顺便说一句,我没有使用任何OpenGL绑定或技术,只是标准的pygame函数,特别是更新函数。