我正在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()加载。
我还有其他方法可以改善游戏性能吗?