使用BLEND_RGB_MULT标志使纹理模糊不清时,帧速率从60 fps降至30 fps?

时间:2020-04-29 00:25:33

标签: python python-2.7 pygame pygame-surface

我正在pygame中制作一个游戏,在那里我具有法线贴图,一些对象和一个灯光贴图。 在取消法线贴图后,我使用BLEND_RGB_MULT标志将光照图贴图显示在屏幕上。这样,我可以为场景添加闪电。但是,通过这种方法获得的帧速率为30 fps。 我尝试禁用光照贴图,并将帧速率提高到60 fps。

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

surface.blit(normal_map,
             (max(0, -camera[0]), max(0, -camera[1])),
             area=(max(0, camera[0]),
                   max(0, camera[1]),
                   min(normal_map.get_width(),
                       camera[0] + surface.get_width()),
                   min(normal_map.get_height(),
                       camera[1] + surface.get_height())))

for obj in self.objects:
    surface.blit(obj.get_render(delta_time), obj.position)

surface.blit(self.light_map, 
             (max(0, -camera[0]),
              max(0, -camera[1])),
             area=(max(0, camera[0]),
                   max(0, camera[1]),
                   min(light_map.get_width(),
                       camera[0] + surface.get_width()),
                   min(light_map.get_height(),
                       camera[1] + surface.get_height())),
             special_flags=pygame.BLEND_RGB_MULT)

编辑:我使用相对于游戏摄像机(只是列表)的位置来修改区域和目的地。这样,我只能渲染玩家实际可以看到的区域。

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

我还有其他方法可以改善游戏性能吗?

法线贴图: enter image description here 灯光图: enter image description here

0 个答案:

没有答案
相关问题