Хорошо, я работаю над приложением OpenGL ES для iPhone и столкнулся с интересной проблемой.
У меня есть функция, которая вычисляет вершины, нормали и координаты текстуры сферы, зависящей от уровня детализации и диапазона сферических координат.
Изначально сохранение вершины в массиве выглядело примерно так:
//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;
Это оказалось катастрофой. Я закончил с чем-то вроде логотипа AT & T. :-) Немного больше работы я обнаружил, добавив счетчик и используя его для индексации массива, все исправлено:
vertPosition[(vertexCount * 3) + 0] = px;
vertPosition[(vertexCount * 3) + 1] = py;
vertPosition[(vertexCount * 3) + 2] = pz;
vertexCount++;
Мои вопросы: что случилось с использованием временного указателя и его перемещением вперед? Является ли то, что у меня сейчас, столь же эффективным, или арифметика указателей будет лучше?