2010-04-21 3 views
5

Je crée un jeu en java et en BufferedImages utilisé pour rendre le contenu à l'écran. J'ai eu des problèmes de performances sur les machines bas de gamme où le jeu est censé fonctionner, donc je suis passé à VolatileImage qui sont normalement plus rapides. Sauf qu'ils ralentissent réellement le tout.Java: VolatileImage plus lent que BufferedImage

Les images sont créées avec GraphicsConfiguration.createCompatibleVolatileImage (...) et sont dessinées à l'écran avec Graphics.drawImage(...) (voir le lien pour voir lequel). Ils sont dessinés sur un canevas en utilisant un double tampon.

Est-ce que quelqu'un a une idée de ce qui ne va pas ici?

+0

J'ai remarqué la même chose. – Hardcoded

+0

Si vous manquez de mémoire sur la carte graphique, cela ne vous aidera évidemment pas. IIRC, 'BufferedImage' a eu quelques accélérations, donc la différence pourrait ne pas être aussi grande qu'elle l'était autrefois. –

+0

@Norswap: Je pense vraiment que trouver une réponse à ce problème consiste à trouver des jeux Java Open Source de premier ordre (il y en a sûrement) ou une grande démo Java (de la "scène de démonstration") et essayer de comprendre ils ont fait. J'avais l'habitude de programmer des jeux et des démos il y a longtemps sur du matériel * très * exotique (comme l'Amiga, le SNES, le mode 13x etc.) et je ne sais toujours pas comment "pousser les pixels" correctement en Java. C'est une fois de plus un domaine où Java a été "sur-édité" et inutilement compliqué. Je ne tiens pas mon souffle pour quelqu'un ici sur SO pour pouvoir vraiment vous aider. – SyntaxT3rr0r

Répondre

6

Il est fort probable que votre code mélange des opérations accélérées et non accélérées. Ce code document est à lire absolument. La section 3.2 en particulier est essentielle pour quiconque travaille avec des graphiques Java accélérés.

+0

Est-il possible que la mise à l'échelle (dans le sens de l'écrêtage, voir le lien dans la question) une image est une telle opération non accelérée? Puisque j'utilise des feuilles de sprite, chaque tirage doit effectivement sélectionner une partie de l'image pour dessiner à l'écran. – Norswap