均一にサンプリングされた距離のグリッドがあります。
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 配列をジオメトリ シェーダーに渡すにはどうすればよいですか?