2017-05-02 4 views
0

Je ne veux pas appeler glClear pour le bit de profondeur ou de couleur parce que je veux être capable de voir tous les cadres précédemment rendus. Et cela fonctionne, sauf qu'il répète le modèle sur tous les axes x et y, et provoque également d'étranges lignes grises. Y a-t-il un moyen d'accomplir cela? Im en utilisant opengl es 3 sur android. Merci pour toute aide.Ne pas appeler les résultats glclear dans des artefacts étranges

uh

+0

Donc, vous ne voulez pas effacer l'image précédente, mais vous vous plaignez de voir l'image précédente? Vous devriez probablement décider si vous voulez l'un ou l'autre – JustSid

+0

Je veux que cela fonctionne comme je ne m'attends pas à être fou. Im dessiner un cercle en tournant à partir d'un point final d'une ligne, et je veux garder les cadres pour voir le cercle entier dessiner –

+0

Avez-vous simplement oublié de l'effacer la première fois? Vous devriez toujours effacer une fois avant de commencer à dessiner. Mais assurez-vous que la scène est chargée, la fenêtre d'affichage définie et les tampons liés avant de le faire ... –

Répondre

1

Le contenu du framebuffer par défaut au début d'une trame est définie, en particulier sur les équarrisseurs à base tuiles, dont la plupart des processeurs graphiques mobiles sont. Vos "répétitions" dans les axes X et Y sont susceptibles de montrer simplement la taille des dalles sur votre GPU (par exemple, il suffit de vider tout ce qui se trouve dans la RAM locale du pavé GPU, répété N fois pour couvrir complètement l'écran).

Si vous souhaitez effectuer un rendu au-dessus de la trame précédente, vous devez configurer la configuration de contexte de rendu pour utiliser EGL_BUFFER_PRESERVED (la valeur par défaut est EGL_BUFFER_DESTROYED). Par exemple:

eglSurfaceAttrib(m_display, m_surface, EGL_SWAP_BEHAVIOR, EGL_BUFFER_PRESERVED); 

Note 1: cela entraînera certains frais généraux (la surface est effectivement recopié en mémoire de tuiles locale), alors en commençant par une défausse de surface ou invalident, ou une vision claire est généralement gratuit.

Note 2: ceci ne conservera que les données de couleur; il n'y a aucun moyen de préserver la profondeur ou le gabarit à travers les images pour le framebuffer par défaut.

+0

Est-ce un paramètre qui peut être activé et désactivé pendant l'exécution? –

+1

Oui, bien qu'il soit habituel de le faire au moment de la création du contexte (vous modifiez normalement les algorithmes de rendu que vous utilisez pour exploiter l'état préservé ou détruit, donc ce n'est pas toujours un paramètre que vous pouvez activer ou désactiver). – solidpixel

+0

savez-vous comment je reçois un eglcontext? C'est la première ligne qui l'écrase –