【发布时间】:2015-11-01 03:44:26
【问题描述】:
我已经学习了几周的计算机图形学课程,考试即将到来,但是我一直卡在索引缓冲区这个话题上。
我知道顶点缓冲区存储网格的所有顶点。现在假设我们想要制作一个立方体。这意味着构建它需要 8 个顶点。每个顶点由 3 个坐标 (x,y,z) 组成,因此顶点缓冲区将占用 3 x 8 = 24 个单位的空间。
我读过索引缓冲区存储顶点的索引。所以我们的立方体顶点的索引将是 1 到 8。这意味着 1 个三角形占用 3 个单位的空间。
困扰我的一个问题是:我们的索引缓冲区需要多少空间单位?
我推断一个立方体有 6 个面。每个面由 2 个三角形组成。这意味着有 12 个三角形,因此索引缓冲区将占用 3 x 12 = 36 个单位的空间。 (我使用这个网站得出这个结论:https://msdn.microsoft.com/en-us/library/windows/desktop/bb147325(v=vs.85).aspx)。 但是,我的答卷声称是 32。
通常我不会费心在 StackOverflow 上发帖问我的老师,但是他目前正在休假,直到考试结束后才会回来。因此, 谁能向我解释如何调节索引缓冲区的大小? (假设它是 OpenGL 中使用的索引缓冲区,如果这很重要的话)。
【问题讨论】:
-
嗯,这里有很多未指定的东西,但 32 似乎是一个奇怪的解决方案。所需的元素数量取决于选择的原始类型。例如,可以用只有 4 个顶点的三角形条或扇形来绘制每个面,总共 24 个。但是,您可能想要开始新的图元,因此您最终会得到 29 个。OTOH,由于只使用了 8 个顶点,因此边缘没有不连续点,因此您可以将条带跨得更长,从而进一步减少计数.以某种奇怪的方式使用 32 个顶点肯定是可能的,但我真的认为 36 是有意的答案。
标签: opengl buffer vertex vertex-buffer index-buffer