Возможно, это действительно зависит от размера карты, но это не должно быть проблемой даже при использовании низкоуровневого компьютера.
Проблема с большими изображениями заключается в том, что для перерисовки всего материала на нем требуется много времени, поэтому вы получите несгибаемую «карту».
Но реальное преимущество с оптимизированным изображением (использование функции convert() - и 16 бит) - это быстрое замедление.
Я работаю с большими изображениями, возможно, на среднем компьютере, и у меня есть около 150 FPS, блядя огромными изображениями, которые требуют всего ~ 100? MB RAM
image = image.convert()#video system has to be initialed
Следующий код создает изображение (5000 * 5000), рисует что-то на нем, (блитирования это на экране, заполнить экран) * 50 раз, и в конце он говорит, сколько времени потребовалось сделать один блит и один флип.
def draw(dr,image,count,radius,r):
for i in range(0,5000,5000//count):
for j in range(0,5000,5000//count):
dr.circle(image,(r.randint(0,255),r.randint(0,255),r.randint(0,255)),[i,j],radius,0)
def geschw_test(screen,image,p):
t1 = p.time.get_ticks()
screen.blit(image,(-100,-100))
p.display.flip()
return p.time.get_ticks() - t1
import pygame as p
import random as r
p.init()
image = p.Surface([5000,5000])
image.fill((255,255,255))
image.set_colorkey((255,255,255))
screen = p.display.set_mode([1440,900],p.SWSURFACE,16)
image = image.convert()#extremely efficient
screen.fill((70,200,70))
draw(p.draw,image,65,50,r)#draw on surface
zahler = 0
anz = 20
speed_arr = []
while zahler < anz:
zahler += 1
screen.fill((0,0,0))
speed_arr.append(geschw_test(screen,image,p))
p.quit()
speed = 0
for i in speed_arr:
speed += i
print(round(speed/anz,1),"miliseconds per blit with flip")
Спасибо за быстрый ответ. Я думаю, что пока я собираюсь придерживаться заранее подготовленной карты. Чтобы избежать дополнительных вычислений для смещения, а затем нарисуйте плитки на осыпи. Мои изображения на карте составляют всего около 62 КБ. – 2010-12-15 15:57:51