J'essaie de comprendre le modèle d'objet OpenGL sur iPhone OS. Je suis actuellement en train de rendre dans quelques différents UIView
s (construire sur CAEAGLayer
s) sur l'écran. J'ai actuellement chacun de ceux-ci en utilisant EAGLContext
séparé, dont chacun a un rendu de couleur et un framebuffer. Je rends des choses similaires en eux, et je voudrais partager des textures entre ces instances pour économiser la mémoire. Ma compréhension actuelle est que je pourrais utiliser la même configuration (un certain nombre de contextes, chacun avec un FBO/RBO) mais si je reproduis les derniers en utilisant le EAGLShareGroup
du premier, alors je peux simplement utiliser la texture noms (GLuints) du premier dans les derniers. Est-ce exact?EAGLContext, EAGLSharegroups, RenderBuffers, FrameBuffers, oh mon dieu!
Si tel est le cas, je suppose que la question de suivi est: quel est l'avantage d'avoir un "groupe de partage"? Pourrais-je simplement réutiliser le même contexte et attacher plusieurs FBO/RBO à ce contexte? Je pense que je me bats avec la couche d'abstraction d'un groupe de partage, qui semble partager des "objets" (textures et autres choses nommées) mais pas "état" (matrices, états activé/désactivé) qui appartiennent au contexte.
Quelle est la meilleure façon de penser à cela?
Merci pour votre illumination!
Merci Pivot. Très utile pour avoir une voix assurée à ce sujet. –
Ceci est seulement la moitié de l'histoire - il semble que vous ne devez pas instancier des groupes de partage; vous devez laisser Apple le faire pour vous. c.f. cette réponse: http://stackoverflow.com/questions/7547603/multiple-eaglviews-but-only-one-copy-of-each-texture-how/7547686#7547686 – Adam