【发布时间】:2020-05-24 11:10:26
【问题描述】:
我正在将 openGL 1.0 版应用程序转换为更现代的版本。我被困在一个功能上,需要一些帮助。
基本上我们从文件 [.SLC] 格式中读取数据点
然后数据在一个数据结构中
vector<vector<vector<float, float, float>>>
旧的渲染:
for [size of first vector]
for [size of second vector]
glBegin(GL_LINE_LOOP);
for [size of third vector]
glVertex3f(float, float, float);
glEnd();
这个 3 层循环表示一个对象,我试图通过一次调用类似于此的方法来呈现该对象。不过,我似乎无法做到这一点。
glVertexAttribPointer(vp, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(GLfloat), nullptr);
glDrawElements(GL_LINE_LOOP, indices.size() / sizeof(uint32_t), GL_UNSIGNED_INT, NULL);
谁能指出我正确的方向。如果您需要更多信息,请告诉我,我会尝试进一步解释。 谢谢
我的问题是将顶点/索引的集合放在一起发送到渲染函数。
如示例所示,有 3 个循环。我在想,就在第三个循环开始之前开始收集顶点数据。
这部分很简单,但是索引集合让我感到困惑。如果第三个循环有 [N] 顶点我也应该有 [N] 索引。
此时我应该将这 2 个集合发送到渲染函数吗?如果是,那么最终可能会调用数百次渲染函数,那么下一个问题是有没有办法将所有数据组合起来并作为单个调用发送?
【问题讨论】:
-
"
vector<vector<vector<float, float, float>>>" 这不是有效的 C++。没有vector<float, float, float>这样的类型。 -
即psedo代码:float,float,float是一个struct