2017-09-07 4 views
1

J'écris un jeu simple dans pyglet (python 3). Je this cloud sprite.pyglet - frontière grise étrange sur l'image

Cependant, quand je Blit, il ressemble à this.

La frontière grise n'a pas pour but de toute évidence, donc je me demande comment le résoudre.

C'est ce que j'utilise pour permettre blitting une image alpha:

from pyglet import gl  

@window.event 
def on_draw(): 
    glEnable(GL_BLEND) 
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) 

Toute aide est appréciée. Merci d'avance.

+0

Nous aurions besoin de voir où et comment vous dessinez en fait/blit l'image. Juste la partie pertinente de la façon dont vous chargez l'image et comment vous dessinez. – Torxed

Répondre

0

Je suppose que vous utilisez des objets resource réguliers et vous les mélangez un à un en utilisant image.blit(X, Y).
Cela fonctionne, mais nécessite beaucoup plus de travail et je pense que le temps de traitement ainsi que vous devez définir et réinitialiser les canaux alpha pour chaque image que vous blit. Cependant, si vous utilisez des sprites, les canaux alpha deviennent une fonctionnalité automatique et vous n'avez pas à vous en soucier.

Cela résout le problème, et est également un activateur de vitesse à long terme:

import pyglet 
import pyglet.clock 
from pyglet.gl import * 

window = pyglet.window.Window() 
window.config.alpha_size = 8 

bg = pyglet.sprite.Sprite(pyglet.image.load('bg.png')) 
cloud = pyglet.sprite.Sprite(pyglet.image.load('cloud.png')) 

@window.event 
def on_draw(): 
    window.clear() 
    bg.draw() 
    cloud.draw() 

pyglet.app.run() 
+0

fonctionne comme un charme! merci beaucoup – twentyseven

+0

@twentyseven De rien. Si vous voulez vous déplacer dans le nuage, faites juste 'cloud.x + = 10' par exemple. Bonne chance! – Torxed