gpt4 book ai didi

c - 指针算术和导航 malloc 数组

转载 作者:行者123 更新时间:2023-11-30 14:31:25 24 4
gpt4 key购买 nike

好的,我正在为 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++;

我的问题是:使用临时指针并将其向前移动会发生什么情况?我现在所得到的是否同样有效,或者指针算术会更好吗?

最佳答案

从你发布的内容来看,应该是一模一样的。我能想到的第一件事是该错误位于代码中的其他位置。

我唯一能想到的另一件事是,如果不是采用顶点数组,而是实际上采用坐标数组,并且坐标中可能有填充,那么这也可以解释差异。

关于c - 指针算术和导航 malloc 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1241988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com