【问题标题】:Creating vertex array in loop - OpenGL在循环中创建顶点数组 - OpenGL
【发布时间】:2014-09-16 07:21:07
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: opengl-es opengl-es-2.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, ....}。

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

    但一切都取决于您的应用程序的提议。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      相关资源
      最近更新 更多