我正在编写一个包含两个进程的游戏。一个用于使用OpenGL进行渲染。另一种是碰撞检测。这样我就可以使用多个核心。
但是,如果没有显示打开,我不能使用任何pygame表面。因此,我无法使用位掩码进行像素完美碰撞或任何其他碰撞。
我试图简单地打开另一个窗口,看看我是否可以使Surfaces工作但我无法打开第二个pygame窗口而不会出现OpenGL函数错误。
您可以在两个单独的进程中使用pygame打开两个非OpenGL窗口,但我使用的是OpenGL。
我想我可能会在某个地方插入一个指向显示的指针,让表面停止说Dead Display
。我可以在第二个过程中操作某种SDL变量来说“它不死在这里”。或者使用像素完美碰撞的其他方式。
我对不使用pygame的像素完美替代品开放。
答案 0 :(得分:1)
你应该没问题,渲染和碰撞相同的线程,相同的CPU。此测试在没有四叉树的情况下循环,然后将其打开。
然后将阻止代码(网络)移动到另一个线程。
运行示例引用:
找到了峰值。这台电脑的性能不会比现在好。 通常会有359400次碰撞检查, 但是这个四叉树将它减少到大约241次碰撞检查
original is pygame.org但需要进行细微修改:http://pastebin.com/U371LaLy
答案 1 :(得分:0)
我要用pymunk。 Chipmunk的python端口。
一年多以前,当我第一次开始编程时,我做了一个愚蠢的实验。这很简单。我完全忘了它。
我无法让pybox2d在任何python版本中工作。