Ok, donc je travaille sur une application OpenGL ES pour l'iPhone, et j'ai rencontré un problème intéressant.Pointer arithmétique et navigation malloc'ed tableaux
J'ai une fonction qui calcule les sommets, les normales et les coordonnées de texture d'une sphère en fonction d'un niveau de détail et d'une plage de coordonnées sphériques.
A l'origine, le stockage d'un sommet dans un tableau ressemblait à ceci:
//After I figure out the size of the vertices:
GLfloat* vertices = (GLfloat *) (malloc(sizeof(GLfloat) * arraySize)));
//Later on when I'm computing vertices...
GLfloat* vertPosition = vertices;
vertPosition[0] = px;
vertPosition[1] = py;
vertPosition[2] = pz;
vertPosition += 3;
Ce avéré être une catastrophe. Je me suis retrouvé avec quelque chose comme le logo AT &. :-) Un peu plus de travail que j'ai découvert l'ajout d'un compteur et en utilisant que pour indexer le tableau tout fixe:
vertPosition[(vertexCount * 3) + 0] = px;
vertPosition[(vertexCount * 3) + 1] = py;
vertPosition[(vertexCount * 3) + 2] = pz;
vertexCount++;
Mes questions sont les suivantes: Qu'est-ce qui est arrivé avec l'aide d'un pointeur temporaire et en le déplaçant en avant? Est-ce que ce que j'ai maintenant est tout aussi efficace, ou est-ce que l'arithmétique du pointeur serait meilleure?