我正在尝试构建一个将所述模型渲染到屏幕的.obj文件导入程序。 目前我已导入顶点并将它们存储在
中std::vector<vec3> vertices;
我的渲染器类非常大,所以我将链接github而不是在此处发布。
所以在renderer.cpp的第41行。我将这些顶点提交给渲染器。最初我只画了三角形,但我想利用GL_ELEMENTS
我的问题是如何(如果可能)我可以从顶点列表中计算这些指数?我试图找到重复项,并在加载模型时这样做,但我不知道如何映射它们。
答案 0 :(得分:-1)
使用映射缓冲区(glMapBuffer
)在您的情况下不起作用。
例如,如果您想知道顶点是否已经被映射(重复),您应该读取所有当前映射的顶点,这很慢。
如果要使用排序数组(可以使用快速二进制搜索),则必须在排序/存储过程中重写该映射缓冲区的许多部分。也慢了。
更好的选择是在普通RAM上自己构建排序顶点数组。在比较两个花车时,建议在数字问题上搜索问题。
在第二次传递时,每个索引只是当前顶点的位置。对数字问题的建议相同。
数据可以通过两个简单的glBufferSubData
发送到GPU,一个用于顶点(及其颜色和法线等),另一个用于索引。
如果对象移动(并且您更喜欢更新坐标而不是使用翻译矩阵),那么使用带有新坐标的映射缓冲区(正如您目前所做的那样)是正确的。指数不会改变,因此不需要更新。