2013-04-27 3 views
0

Je charge mes fichiers de modèle 3D et charge leur vertex, texture et normal lors du lancement de l'application dans un thread d'arrière-plan. Ces modèles sont utilisés par 2 GLKViewControllers. Ce que je veux faire est de lier les données aux VBO et de libérer les données. Ensuite, je veux utiliser ces bind à ces VBOs chaque fois que nécessaire afin que je réduise le temps de chargement et de minimiser l'utilisation de la mémoire.Partage de VBO entre plusieurs GLKViewControllers?

Répondre

0

Il y a plusieurs façons de faire cela, la meilleure étant de créer un graphe de scène complet. Mais l'approche la plus basique serait de créer une classe (appelée, par exemple, 'Mesh') qui stocke vos VBO GLuints comme variables de classe, et qui crée et lie tout sur init.

Ensuite instancier simplement la classe Mesh quelque part qui peut être consulté par les deux contrôleurs de vue, idéalement en utilisant une sorte de wrapper global comme un singleton.

+0

J'ai fait exactement cela, mais l'application se bloque sans aucun rapport d'erreur pour mon application. J'ai un singleton qui init un EAGLContext, le définit comme le contexte actuel et lie les tampons. Le premier contrôleur de vue se charge bien, le second se charge bien aussi .. mais en répétant cela bloque l'application. Je ne libère le contexte nulle part. –

+0

Chargez-vous les deux contrôleurs de vue simultanément? Est-ce que vous allouez/init le contexte dans l'init du singleton? Avez-vous essayé d'effectuer alloc/init du contexte dans un VC, en le passant comme une propriété à un singleton, puis en accédant à cette propriété à partir du second VC? – AlunAlun

+0

Juste essayé, se bloque toujours. Je me demande si cela a à voir avec GCD. Mais j'ai vérifié plusieurs fois pour m'assurer que toutes les commandes OpenGL sont émises dans la file d'attente principale. –

Questions connexes