我正在尝试决定在滚动地图游戏中,是使用预先渲染的大图像还是每帧在屏幕上单独渲染瓦片更好。我已经尝试过两种方式编程,但没有看到明显的速度差异,但这可能是由于我的经验不足。
除了内存之外,是否有不使用预先渲染地图的速度原因?
内存和速度密切相关。如果您的图块集适合视频内存,但预渲染地图不适合,则速度会受到影响。
image = image.convert()#video system has to be initialed
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")
根据您想制作的地图大小而定,然而,凭借现有技术,很难看到瓷砖地图“渲染”需要比预期更长的时间,基于瓷砖的游戏几乎已经消失了,但这仍然是游戏编程世界的一个好实践和起点。