[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: [pygame] Fullscreen vs Windowed Alpha Blit speed?
- To: pygame-users@xxxxxxxx
- Subject: Re: [pygame] Fullscreen vs Windowed Alpha Blit speed?
- From: Rene Dudfield <renesd@xxxxxxxxx>
- Date: Mon, 24 Jan 2005 18:58:53 +1100
- Delivered-to: archiver@seul.org
- Delivered-to: pygame-users-outgoing@seul.org
- Delivered-to: pygame-users@seul.org
- Delivery-date: Mon, 24 Jan 2005 02:59:26 -0500
- Domainkey-signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:reply-to:to:subject:in-reply-to:mime-version:content-type:content-transfer-encoding:references; b=tbZlBRI0nmWtQ3eKNNPQIF2hYVguItzxr0Q/djxw5XEKiKlLzLejxVCwVBQJ3/VJJS9SMQ8Ckqq7nkzmQj1AJ/VctExgGE9VUkKAV2iJdc2gLt1QABhyo3FeCEUNBEGsvdfbndkAm77+nXNOmhsyNAYt+l76HP49JPY7Pl8yMfA=
- In-reply-to: <41F2B677.40807@go.wifl.at.org>
- References: <41F2B677.40807@go.wifl.at.org>
- Reply-to: pygame-users@xxxxxxxx
- Sender: owner-pygame-users@xxxxxxxx
random thought here:
Maybe full screen mode is going into a different color depth?
On Sat, 22 Jan 2005 12:24:23 -0800, Fred Burton <flbl@xxxxxxxxxxxxxx> wrote:
> I was writing a simple slideshow program last night (which fades images
> in and out),
> and was wondering why for some reason bliting with alpha seems to run
> much slower when in fullscreen than when not.
>
> Can someone tell me how to make it run as fast in fullscreen as in a
> window? (I tried a few things last night, but none of them seemed to help)
>
>
> import pygame
> import os
>
> fade_time = 1000
> hang_time = 10000
> imgdir = 'images/'
>
> fullscreen = 0
> bgcolor = 0
>
> # 20 minute software by Fred Burton: flbl@xxxxxxxxxxxxxx
>
> files = os.listdir(imgdir)
>
> pics = []
> for pic in files:
> if pic.lower()[-4:] == '.jpg':
> pics.append(pic)
>
> pics.sort()
>
> class ErrorQuit:
> pass
>
> skip = '*'
>
> def think():
> global gamequit
> global skip
> remainingEvents = pygame.event.get()
> for event in remainingEvents:
> if event.type == pygame.QUIT:
> raise ErrorQuit
> if event.type == pygame.KEYDOWN:
> if event.key == pygame.K_ESCAPE:
> raise ErrorQuit
> if event.key == pygame.K_SPACE:
> skip = 1
> if event.key == pygame.K_n:
> skip = 1
> if event.key == pygame.K_p:
> skip = -1
> if event.key == pygame.K_b:
> skip = -1
> if event.type == pygame.MOUSEBUTTONDOWN:
> if event.button == 1:
> skip = 1
> if event.button == 3:
> skip = -1
>
> def find_pred(name):
> dl = pics
> if len(dl) == 0:
> return None
> try:
> i = dl.index(name)
> except:
> return dl[-1]
> i -= 1
> if i<0:
> i = -1
> return dl[i]
>
> def find_succ(name):
> dl = pics
> if len(dl) == 0:
> return None
> try:
> i = dl.index(name)
> except:
> return dl[0]
> i += 1
> if i>=len(dl):
> i = 0
> return dl[i]
>
> try:
>
> pygame.init()
> if fullscreen:
> screen = pygame.display.set_mode((1024,768), pygame.DOUBLEBUF | pygame.FULLSCREEN)
> else:
> screen = pygame.display.set_mode((1024,768), pygame.DOUBLEBUF)
>
> ifname = pics[0]
> while (1):
> if skip == -1:
> ifname = find_pred(ifname)
> elif skip != '*':
> ifname = find_succ(ifname)
> skip = 0
>
> img = pygame.image.load(imgdir+ifname)
> # pos = (0,0)
> pos = (0.5*(screen.get_width()-img.get_width()), 0.5*(screen.get_height()-img.get_height()))
>
> t0 = pygame.time.get_ticks()
> t1 = t0
> while (t1-t0)<fade_time:
> n = (255*(t1-t0))/fade_time
> screen.fill(bgcolor)
> img.set_alpha(int(n))
> screen.blit(img, pos)
> pygame.display.flip()
> think()
>
> pygame.time.wait(1)
> t1 = pygame.time.get_ticks()
>
> img.set_alpha(255)
> screen.blit(img, pos)
> pygame.display.flip()
>
> t0 = pygame.time.get_ticks()
> t1 = t0
> while ((t1-t0)<hang_time) and (skip == 0):
> n = (255*(t1-t0))/fade_time
> think()
> pygame.time.wait(10)
> t1 = pygame.time.get_ticks()
>
> t0 = pygame.time.get_ticks()
> t1 = t0
> while (t1-t0)<fade_time:
> n = 255-((255*(t1-t0))/fade_time)
> screen.fill(bgcolor)
> img.set_alpha(int(n))
> screen.blit(img, pos)
> pygame.display.flip()
> pygame.time.wait(1)
> think()
> t1 = pygame.time.get_ticks()
>
> screen.fill(bgcolor)
> pygame.display.flip()
>
> finally:
> pygame.quit()
>
>
>