OpenGL中给出3D坐标的顺序是什么?

5

我希望有人能为我解答这个问题。如果给我一个点(i,j,k),我可以制作以下的立方体:

     8______K_______7     1 =  i ,  j ,  k
     /|           /|      2 = i+1,  j ,  k
   L/ |         J/ |      3 = i+1, j+1,  k
   /  |H        /  |      4 =  i , j+1,  k
 5/______I_____/6  |G     5 =  i ,  j , k+1
  |   |        |   |      6 = i+1,  j , k+1
  |   |        |   |      7 = i+1, j+1, k+1
 E|  4|________|F__|3     8 =  i , j+1, k+1
  |  /     c   |  /
  | /D         | /B       
  |/___________|/            
  1      A     2             

其中数字1-8分别代表立方体的每个顶点,字母A-L代表立方体每条棱线的中点。

我正在尝试实现一个Marching Cube算法,但是我不知道为每个三角面给出哪些点的顺序。例如,如果标记了顶点1,则需要从E-D-A绘制一个平面。同样,如果标记了顶点7,则需要从K-J-G绘制一个平面。在OpenGL中,是否有关于在3D空间中给出坐标顺序的规则?


2
看看Paul Bourkes的实现。虽然我记得表格有一些小错误,但那是很多年前的事情了,所以可能已经被修复了(但你可能需要与另一个来源进行比较确认)。 - user786653
1个回答

2

在OpenGL中,给出3D空间坐标的顺序是否有规定?

OpenGL通过在屏幕空间中顶点的绕序定义了面的正反两面。如果一个面在屏幕空间中的顶点是逆时针排列的,则认为正面是可见的。顺时针排列 => 背面。法向量应该指向正面方向。


OpenGL通过在屏幕空间中定义顶点的绕向来定义面的前后面。实际上,OpenGL允许您定义正反面是什么。这就是glFrontFace 的作用。 - Nicol Bolas
@NicolBolas:这样来说吧:它是默认设置。 - datenwolf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接