首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenGL to OpenGL-ES - glBegin();

OpenGL to OpenGL-ES - glBegin();
EN

Stack Overflow用户
提问于 2009-05-05 18:34:13
回答 2查看 3.7K关注 0票数 2

我正在努力学习为iPhone编写OpenGL应用程序。如何移植以下代码以与OpenGL-ES一起工作?我知道我必须将顶点存储在一个数组中,然后调用glDrawArrays(),但是有没有一种最佳的方法呢?我的想法是创建一个非常大的数组,并简单地保留填充了多少空格的计数器。这有更好的方法吗?如果使用NSArray,然后再转换回c数组呢?

代码语言:javascript
复制
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();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-05-05 20:17:32

如果您有足够的空间并且知道数组的最大大小,那么最简单的方法就是使用一个大的静态分配的数组,并跟踪它当前的逻辑大小。

如果内存不足但处理器资源充足,那么动态打包数组,然后注册数组并调用glDrawArrays()。

混合方法将使用动态分配的数组,该数组可以更新(如果需要)。您可以手动完成此操作,方法是在动态数组接近满时重新分配它,或者使用某种NSMutableArray。(注: NSArray用于静态数组;NSMutableArrays (子类)是动态的。See here.)

希望这能有所帮助:)

票数 1
EN

Stack Overflow用户

发布于 2009-05-05 18:40:32

听起来像是经典的速度/内存权衡。如果内存非常稀缺,那么尝试使用动态的数据结构。如果你对数组的大小有一个合理的界限,并且从这个等式中你确切地知道你需要多少个顶点,那么就像你建议的那样,使用一个普通的静态数组和一个计数器。

看起来你已经了解了数组和绘制数组,所以我就不再赘述了。

祝好运!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/826307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档