GL_TRIANGLE_ADJACENCY和glDrawElements

所以我一直没能在网上find关于如何存储三角形邻接的数据。

目前我使用半边来计算我的邻居(在这里提供一个答案)。

但是,我将这些数据与我的VBO存储在一起吗? (这意味着两倍的顶点数据)或者我将它存储在我的元素数组缓冲区? 如果是的话,我该如何告诉opengl我将在其中插入交织?

您可以将其存储在您的GL_ELEMENT_ARRAY_BUFFER中,因为顶点数据仅针对邻接点重复。

假设每个连续的3个索引定义一个三角形,并且“ unsigned *ndx ”指向缓冲区中的一个任意三角形,则连续6个索引将定义一个具有邻接的三​​角形,如下所示:

  • ndx [0] – 原始三角形的索引0
  • ndx [1] – 为{0,1}完成相邻三角形的顶点索引
  • ndx [2] – 原始三角形的索引1
  • ndx [3] – 为{1,2}完成相邻三角形的顶点索引
  • ndx [4] – 原始三角形的索引2
  • ndx [5] – 为{2,0}完成相邻三角形的顶点索引