2011-08-16 9 views
1

Ma scène principale est composée de GL_POINTS dans l'espace 3D. Ce que je voudrais faire, c'est pouvoir dessiner une seule ligne GL_LINES (superposition 2d) en haut de la scène lorsque l'utilisateur bouge son doigt sur l'écran tout en conservant l'état 3D GL_POINTS sous-jacent. J'ai de la difficulté à comprendre si c'est possible. Ai-je besoin de 2 framebuffers? Comment puis-je sauvegarder les données de framebuffer précédentes de GL_POINTS et le rendre à nouveau dans les images suivantes? Dois-je mélanger des framebuffers - un pour la couche GL_LINE et un pour les données GL_POINTS?Redraw old buffer question

J'ai essayé de n'appeler que presentFramebuffer sans appeler setFramebuffer, mais c'est en conservant chaque GL_LINES tiré des images précédentes - ce dont je ne veux pas. Comment puis-je conserver des parties du framebuffer et enlever d'autres parties?

Répondre

0
  1. vous ne rend pas besoin d'un 2 cadre-tampons du tout

      frame buffer
    • est la mémoire de votre écran
    • juste tous les trucs sur ce que vous avez
  2. si vous voulez dire par frame-buffer VBO (VertexBufferObject) alors ils ne sont pas du tout

    • si vous restituez les mêmes données (vertex)
    • alors vous avez juste besoin 1x VBO
    • et appelez glDrawArrays/glDrawElements deux fois
    • une fois avec GL_POINTS et une fois avec GL_LINES/GL_LINE_LOOP ou quoi que

    • si vous restituez des données différentes

    • alors vous avez besoin 2x VBO
    • ou s'il n'y a que quelques lignes, vous pouvez toujours utiliser glBegin/glEnd pour eux à la place.
  3. si vous avez juste besoin de zones distinctes de vue, vous pouvez utiliser

    • détourage, vue port de changement, remplacer les frontières par quadriceps, ...
    • tirage à la texture, etc. ... il y a beaucoup plus d'options là-bas