2010-11-12 106 views
2

我发布了这个pygame mailing list,但也许这里有人会有一个答案。真的,我无法确定它是pygame问题还是SDL问题。pygame OpenGL窗口不刷新Mac OS X 10.6,Python 2.7

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

安装SDL和pygame我跟着instructions here。我要指出,

  • 2D pygame的例子,如pygame.examples.aliens做工精细,而3D的,如pygame.examples.glcube表现出相同的问题,因为我自己的代码。
  • 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 
    

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

+0

警告可能是不相关的,我已经看到这个问题来到我的Mac上,并使用各种OpenGL绑定编写的程序... – 2010-11-12 05:38:11

+0

重新启动有时可以解决问题;这可能是一个驱动程序问题或类似的事情。 – 2010-11-12 05:49:51

+0

该死的!你是对的。特别是,似乎Ctrl + Cing一个pygame GL进程会将其变成这个讨厌的状态,修复它的唯一方法就是重启。想要回答它,所以我可以接受你的回答? – dwf 2010-11-12 06:03:41

回答

1

事实证明,当我Ctrl + C基于pygame的应用程序时,某种类型的OS X驱动程序故障导致此问题,唯一的解决方法是重新启动。

0

恐怕它不是OpenGL的问题。我在Windows 7和MACOSX 10.4.11中都遇到刷新问题。出于奇怪的原因,Linux上没有刷新问题。

我解决这个问题的方法是检测“未聚焦”事件,因为只有当窗口没有聚焦并且窗口在其前面传递时才会出现刷新问题。尽管我发现了整个窗口的重绘,但很快我发现了“无焦点”和/或“焦点”。顺便说一下,我没有使用OpenGL绑定或技术,只是标准的pygame函数特别是更新函数。

+0

我认为你做错了,那么;重新启动解决了我的问题。 – dwf 2010-11-24 20:31:38

+0

我没有看到它是如何是我的代码的错误,因为问题出现在窗口的下半部分,而上半部分自身很好地刷新。而这个问题在Ubuntu linux根本就不存在。 – Kilon 2010-11-26 10:27:40