在循环中创建顶点数组 - OpenGL

时间:2014-09-15 21:42:03

标签: opengl-es opengl-es-2.0

刚开始使用OpenGL ES 2.0,并想知道构建顶点数组的最佳方法。现在,我有一个结构,我继续在其中添加新的顶点... ... 5000次(增量为1)。

对我来说,这似乎是一种生成顶点数组的缓慢方法。

也许所有的值都应该在创建时保存一次?然后将它们放在文件的开头,如...

顶点顶点[...] = {     {{1,-1,0},{1,0,0,1}}     {{1,1,0},{0,0,1,1}}     ... };

这样更好吗?或者我们还有其他选择吗?

1 个答案:

答案 0 :(得分:1)

如果顶点是常量且数量很大,我建议将其保存在二进制文件中,并在启动应用程序时加载到服务器端内存(using glBufferData)中。

如果您询问数据顺序,建议您按照vertexAttribPoint读取数据的顺序保存数据。例如,如果您有3个顶点坐标(X,Y,Z)和4个顶点颜色(R,G,B,A),如果您在glBuffer中按此顺序创建它,GPU将更快地读取您的数据:{X1, Y1,Z1,R1,G1,B1,A1,X2,Y2,Z2,R2,G2,B2,A2,......}。

通常情况下,问题不在于浪费时间来创建/加载应用程序中的顶点数据,而是浪费时间来渲染这些数据。

但一切都取决于你申请的建议。