Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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 使用BLEND_RGB_MULT flag闪烁纹理时,帧速率从60 fps降至30 fps?_Python_Python 2.7_Pygame_Pygame Surface - Fatal编程技术网

Python 使用BLEND_RGB_MULT flag闪烁纹理时,帧速率从60 fps降至30 fps?

Python 使用BLEND_RGB_MULT flag闪烁纹理时,帧速率从60 fps降至30 fps?,python,python-2.7,pygame,pygame-surface,Python,Python 2.7,Pygame,Pygame Surface,我正在pygame中制作一个游戏,其中有法线贴图、一些对象和灯光贴图。 在闪烁法线贴图后,我使用BLEND_RGB_MULT标志将灯光贴图闪烁到屏幕上。这样我可以在场景中添加闪电。然而,我用这种方法得到的帧速率是30 fps。 我尝试禁用灯光贴图,帧速率增加到60 fps 我用来绘制法线贴图和灯光贴图的代码是: surface.blit(法线贴图, (最大值(0,-摄像机[0]),最大值(0,-摄像机[1]), 面积=(最大值(0,摄像机[0]), 最大值(0,摄像机[1]), 最小值(法线贴图

我正在pygame中制作一个游戏,其中有法线贴图、一些对象和灯光贴图。 在闪烁法线贴图后,我使用BLEND_RGB_MULT标志将灯光贴图闪烁到屏幕上。这样我可以在场景中添加闪电。然而,我用这种方法得到的帧速率是30 fps。 我尝试禁用灯光贴图,帧速率增加到60 fps

我用来绘制法线贴图和灯光贴图的代码是:

surface.blit(法线贴图,
(最大值(0,-摄像机[0]),最大值(0,-摄像机[1]),
面积=(最大值(0,摄像机[0]),
最大值(0,摄像机[1]),
最小值(法线贴图。获取宽度(),
摄影机[0]+曲面。获取_宽度()),
最小值(法线贴图。获取高度(),
相机[1]+表面。获取高度()
对于self.objects中的obj:
blit(对象获取渲染(增量时间),对象位置)
曲面.blit(自发光贴图,
(最大值(0,-摄像机[0]),
最大值(0,-摄像机[1]),
面积=(最大值(0,摄像机[0]),
最大值(0,摄像机[1]),
最小值(灯光贴图。获取宽度(),
摄影机[0]+曲面。获取_宽度()),
最小值(灯光贴图。获取高度(),
摄像头[1]+曲面。获取高度(),
特殊标志=pygame.BLEND(混合)
编辑:我使用相对于游戏摄像机的位置(只是一个列表)修改区域和目的地。这样我只渲染玩家可以看到的区域

我已经在主屏幕表面设置了DOUBLEBUF和HWSURFACE。两个图像都使用convert()加载

我还能做些什么来提高我的比赛成绩吗

法线贴图: 光照图:

您能否仅将灯光贴图应用于屏幕上被贴图填充的部分?有趣的技术顺便说一句。@Kingsley是的,我已经在做了。让我用这些信息来更新我的问题。它几乎没有你的方法灵活,但可能有所有瓷砖的预暗版本,然后根据到播放器的欧几里德线距离渲染
瓷砖[亮度]
。或者可能是一个像素化的瓷砖颜色贴图,模拟上面的情况,但是在24x24网格中——大约是上面光贴图的瓷砖大小。你提出的方法很棒,它允许不同形状的光(例如:牛眼灯),甚至不同的颜色混合。我做了一个测试版本,直到窗口是1000像素的正方形,FPS才从60下降。如果你想要低分辨率的像素化图形,也许你可以在低分辨率下渲染屏幕,然后在显示之前将最终结果缩放到窗口大小。感谢所有的建议,但是我发现这是我的设备的问题,而不是pygame的问题,现在我以60 fps的速度平稳运行,没有任何问题。