2013-07-23 3 views
1

J'ai implémenté l'effet de bloom post process dans mon jeu pour Android en utilisant le rendu de texture et les shaders appropriés. Cela fonctionne, mais le coup de performance est inacceptable. J'ai donc pensé que je pourrais rendre la scène à une texture plus petite et ensuite étirer la texture en plein écran. Le problème est que lorsque j'attache une texture plus petite que la fenêtre d'affichage au framebuffer hors écran, la scène est rognée. L'image ci-dessous illustre le problème:OpenGL ES 2.0: attachez une texture plus petite au framebuffer

illustration

Est-il possible que je pourrais « carte » la texture attachée au framebuffer en quelque sorte, de sorte que la fenêtre entière se rend à elle? Je pourrais probablement modifier la matrice de projection pour atteindre l'objectif, mais cela compliquerait mon code et je préférerais l'éviter.

Répondre

1

Je pense que vous pouvez le faire en modifiant simplement la fenêtre pour qu'elle corresponde aux dimensions de la texture avant de procéder au rendu, puis redéfinissez la fenêtre sur les dimensions de la vue avant de la restituer au framebuffer. Il ne devrait pas y avoir de perte de performance significative car vous appellerez glviewport() deux fois plus souvent. Votre suggestion sur la mise à l'échelle de la matrice de projection devrait également fonctionner.