2010-02-06 3 views
14

J'ai vu cette session Google IO: http://code.google.com/intl/iw/events/io/2009/sessions/WritingRealTimeGamesAndroid.html
Il dit que la fonction draw_texture est la plus rapide et VBO est la 2ème plus rapide.
Mais je ne comprends pas comment l'utiliser (la méthode draw_texture ou la méthode VBO).Quelle est la manière la plus simple de dessiner une texture avec OpenGL ES?

Une suggestion?

+1

État ce que vous êtes après, ce que vous avez essayé ... draw_texture est assez bien expliqué dans le cahier des charges, VBOs beaucoup d'exemples là-bas. draw_texture et VBO ne sont pas pour la même chose cependant. dessiner la texture ne fait que gâcher une texture. Les VBO stockent les données de vertex, généralement utilisées pour dessiner des triangles. Vous pouvez utiliser des VBO pour dessiner un quad aligné à l'écran pour dessiner une texture exacte de pixels, mais draw_texture, si disponible, fait un meilleur travail ... Alors, que voulez-vous ** dessiner? – Bahbar

+0

Disons que je veux dessiner un textutre que je pourrais redimensionner (largeur et hauteur) et peut-être tourner – Adir

+1

draw_texture ne permet pas les transformations de texture comme la rotation. Pour cela, vous devrez utiliser des VBO. –

Répondre

20

Le code source pour le test de la méthode de sprite mentionné dans la vidéo est disponible ici:
http://code.google.com/p/apps-for-android/source/browse/#svn/trunk/SpriteMethodTest

Voici un exemple de celui où un VBO est utilisé:
http://code.google.com/p/apps-for-android/source/browse/SpriteMethodTest/src/com/android/spritemethodtest/Grid.java#237

Voici un exemple de celui où l'extension de texture de dessin est utilisée:
http://code.google.com/p/apps-for-android/source/browse/SpriteMethodTest/src/com/android/spritemethodtest/GLSprite.java

Une chose à surveiller, cependant, est que le dessiner l'extension de texture n'est en fait pas le plus rapide pour tous les jeux utilisant des sprites. De nombreux jeux ont des groupes de sprites qui partagent tous le même état de rendu, par exemple. Dans ce cas, il est beaucoup plus rapide de placer tous les sprites ayant le même état de rendu dans le même tampon et de les dessiner avec la même commande draw. La commande draw texture ne le permet pas. Avec la commande draw texture, vous devez l'appeler une fois par sprite.

C'est la raison pour laquelle les textures d'atlas sont souvent utilisées. Une texture d'atlas est un seul objet de texture lié qui contient de nombreuses images différentes. Vous pouvez dessiner des sprites avec différentes images de cette façon sans avoir à lier à un objet de texture différent. Tout ce que vous faites est de leur faire utiliser différentes coordonnées de texture dans la texture de l'atlas. Si l'autre état de rendu est le même, comme la fonction de fusion requise, vous pouvez ensuite assembler les sprites pour obtenir de meilleures performances.

+2

Les liens semblent être cassés maintenant, mais le projet est toujours là et les fichiers peuvent être navigués à via svn 'browse'. – mlvljr

+0

@mlvjr J'ai édité le post et corrigé les liens: juste nécessaire pour enlever la partie/tronc /. – DavidDraughn

Questions connexes