[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()
> 
> 
>