我有一个均匀采样的距离网格:
D(x_i, y_j, z_k),其中
x_i = x0 + i*dx, 0 <= i < nx
y_j = y0 + j*dy, 0 <= j < ny
z_k = z0 + k*dz, 0 <= k < nz
我想将此网格中的每个单元格传递给几何着色器并输出 0 到 5 个三角形,如行进立方体算法中指定的那样。
我正在考虑使用统一值将 x0、dx、y0、dy、z0、dz 和轮廓值发送到着色器,并将单元格的索引编码为点的位置:
glBegin(GL_POINTS);
for(int i = 0; i < nx - 1; i++) {
for(int j = 0; j < ny - 1; j++) {
for(int k = 0; k < nz - 1; k++) {
glVertex3f(i, j, k);
}
}
}
glEnd();
然而,在几何着色器内部,我必须查找 (i,j,k) 单元格中 8 个角的距离值。如何将 3D 距离数组传递给几何着色器?