好的,所以我正在为 iPhone 开发一个 OpenGL ES 应用程序,我遇到了一个有趣的问题。
我有一个函数可以根据细节级别和球坐标范围计算球体的顶点、法线和纹理坐标。
最初,将顶点存储在数组中看起来像这样:
//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++;
我的问题是:使用临时指针并将其向前移动会发生什么?我现在得到的是否同样有效,或者指针算法会更好?