2012-07-28 4 views
1

Modifier Ce problème a été corrigé dans https://github.com/threerings/playn/commit/137ce50dddd2716f84c38ec1568d7ae5a368434b. Voir la réponse de Par Eklund pour plus de détails.Impossible de restituer SurfaceLayer pendant la méthode de peinture

Avant de commencer: je suis un novice à la programmation de jeux en général il est donc très probable que j'ai un malentendu fondamental des outils que je me sers. Cependant, je vais pousser avec ma question ...

Chaque fois que j'essaie de dessiner quelque chose sur mon Surface Layer pendant la méthode paint, je reçois un écran noir. Si je dessine pendant la méthode init, il apparaît OK.

Je suis en train de reproduire le code sous le Surface Layer banner here. Le code en question est la suivante:

public void paint() { 
    // Draw 100 random peas imperatively. 
    surf.clear(0); 
    for (int i = 0; i < 100; ++i) { 
    int x = (int)(random() * WIDTH); 
    int y = (int)(random() * HEIGHT); 
    surf.drawImage(pea, x, y); 
    } 
} 

J'utilise regarderN 1.4 alors même si le code ne correspond pas directement à ce que je vous écris, je pensais que j'avais au moins l'équivalent (sauf que je dessine des rectangles blancs) :

public void paint(final float alpha) { 
    surfaceLayer.surface().clear(); 
    surfaceLayer.surface().setFillColor(Color.rgb(255, 255, 255)); 
    for (int i = 0; i < 100; ++i) { 
    int x = (int) (Math.random() * width); 
    int y = (int) (Math.random() * height); 
    surfaceLayer.surface().fillRect(x, y, 5, 5); 
    } 
} 

Rien n'est rendu à l'écran. Si je déplace ce code dans la méthode init, il se produit comme prévu.

Maintenant Fait intéressant si je fais projet regarderN 1.3.1 et utilise le même code exacte elle rend bien au cours du procédé de peinture (étant donné que j'utilise toujours le même code exact je ne suis pas sûr de la version le site PlayN utilise dans son exemple le code ...).

Qu'est-ce que j'ai manqué ici? A 1.4 a changé quelque chose à faire avec le Surface Layer et je dois l'utiliser différemment maintenant? Merci.

Répondre

1

Je suis fondamentalement un novice au jeu moi-même la programmation et j'ai couru pour le même problème que vous (mêmes symptômes au moins) avec regarderN 1,5 SNAPSHOT. Je lui ai soumis un problème ici: http://code.google.com/p/playn/issues/detail?id=205

Aussi, mon expérience est qu'il ne semble pas être spécifiquement lié à savoir si le rendu est fait dans la méthode init ou la méthode de peinture. Au contraire, il semble que le rendu ne réussisse que le premier instant (le premier rendu d'image a lieu). Veuillez voir le fichier joint dans le numéro pour un exemple (un peu) minimal. Comme je l'ai dit dans le numéro, je pense que cela est lié à la mise en œuvre du GL20 et à la gestion des tampons de frame, mais étant donné que je suis encore plus novice sur OpenGL, vous devriez prendre ma spéculation sel.

Les regarderN principaux contributeurs devraient être en mesure de répondre et résoudre ce assez rapidement cependant. Espérons que nous recevons leur attention bientôt. :)

+0

On dirait qu'il a été corrigé - voir le problème :) Fix est en changeset https://github.com/threerings/playn/commit/137ce50dddd2716f84c38ec1568d7ae5a368434b –

Questions connexes