我正在努力学习为iPhone编写OpenGL应用程序。如何移植以下代码以与OpenGL-ES一起工作?我知道我必须将顶点存储在一个数组中,然后调用glDrawArrays(),但是有没有一种最佳的方法呢?我的想法是创建一个非常大的数组,并简单地保留填充了多少空格的计数器。这有更好的方法吗?如果使用NSArray,然后再转换回c数组呢?
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();发布于 2009-05-05 20:17:32
如果您有足够的空间并且知道数组的最大大小,那么最简单的方法就是使用一个大的静态分配的数组,并跟踪它当前的逻辑大小。
如果内存不足但处理器资源充足,那么动态打包数组,然后注册数组并调用glDrawArrays()。
混合方法将使用动态分配的数组,该数组可以更新(如果需要)。您可以手动完成此操作,方法是在动态数组接近满时重新分配它,或者使用某种NSMutableArray。(注: NSArray用于静态数组;NSMutableArrays (子类)是动态的。See here.)
希望这能有所帮助:)
发布于 2009-05-05 18:40:32
听起来像是经典的速度/内存权衡。如果内存非常稀缺,那么尝试使用动态的数据结构。如果你对数组的大小有一个合理的界限,并且从这个等式中你确切地知道你需要多少个顶点,那么就像你建议的那样,使用一个普通的静态数组和一个计数器。
看起来你已经了解了数组和绘制数组,所以我就不再赘述了。
祝好运!
https://stackoverflow.com/questions/826307
复制相似问题