2009-05-05 7 views
2

J'essaie d'apprendre à écrire des applications OpenGL pour l'iPhone. Comment puis-je porter le code suivant pour travailler avec OpenGL-ES? Je sais que je dois stocker les sommets dans un tableau, puis appeler glDrawArrays(), mais existe-t-il un moyen optimal de le faire? Ma pensée est de créer un très grand tableau et de simplement garder un compteur du nombre d'espaces remplis. Est-ce qu'il y a une meilleure approche? Qu'en est-il de l'utilisation d'un NSArray, puis de la conversion en un tableau C?OpenGL à OpenGL-ES - glBegin();

glBegin(GL_LINE_STRIP); 

z = -50.0f; 
for(angle = 0.0f; angle <= (2.0f*3.1415f)*3.0f; angle += 0.1f) 
    { 
    x = 50.0f*sin(angle); 
    y = 50.0f*cos(angle); 

    // Specify the point and move the Z value up a little 
    glVertex3f(x, y, z); 
    z += 0.5f; 
    } 

// Done drawing points 
glEnd(); 

Répondre

1

Si vous disposez de suffisamment d'espace et que vous connaissez la taille maximale de la baie, il est plus simple d'utiliser une grande baie allouée statiquement et de garder une trace de sa taille logique actuelle.

Si la mémoire est insuffisante mais que les ressources du processeur sont abondantes, empaquetez la baie à la volée, puis enregistrez les baies et appelez glDrawArrays().

L'approche hybride consisterait à utiliser un tableau alloué dynamiquement qui peut être mis à jour (si nécessaire). Vous pouvez le faire manuellement en réallouant un tableau dynamique quand il approche de devenir plein ou en utilisant un NSMutableArray de quelque sorte. (N.B. NSArray est pour les tableaux statiques; NSMutableArrays (sous-classe) sont dynamiques See here..)

Hope this aidé :)

1

Cela ressemble au compromis vitesse/mémoire classique. Si la mémoire est très rare, essayez d'utiliser une structure de données dynamique. Si vous avez une limite raisonnable pour la taille du tableau, et à partir de cette équation, vous savez exactement combien de verts vous avez besoin, alors utilisez simplement un vieux tableau statique avec un compteur comme vous l'avez suggéré.

On dirait que vous connaissez les tableaux, et dessinez des tableaux, donc je ne vais pas entrer dans cela.

Bonne chance!

Questions connexes