如何使用for循环[voxel]生成简单的地形

时间:2013-06-15 18:53:15

标签: java opengl lwjgl

我正在尝试为我的体素游戏生成一个10 * 10 * 10块的块,渲染1块是完全没问题但是当我使用for-loop时它会搞砸,以下是正确的吗?:

    final int chunk = 10;
    final float B_SIZE = 1.0f;

    for (int x = 0; x < chunk; x++) {
        for (int y = 0; y < chunk; y++) {
            for (int z = 0; z < chunk; z++) {
                block.render();
                GL11.glTranslatef(0.0f, 0.0f, B_SIZE);
            }
            GL11.glTranslatef(0.0f, B_SIZE, -chunk * B_SIZE);
        }
        GL11.glTranslatef(B_SIZE, -chunk * B_SIZE, 0.0f);
    }

p.s:block.render();是一个我正在渲染一个1f * 1f * 1f立方体的类,它也有自己的vector3f,这就是我可以翻译它的原因。

1 个答案:

答案 0 :(得分:2)

我会从更简单的版本开始。而不是为每个块调整矩阵。将当前矩阵推入堆栈。翻译它以绘制单个块。然后,弹出以将其重置为原始状态。

final int chunk = 10;
final float B_SIZE = 1.0f;

for (int x = 0; x < chunk; x++) {
    for (int y = 0; y < chunk; y++) {
        for (int z = 0; z < chunk; z++) {
            GL11.glPushMatrix();
            GL11.glTranslatef(x*B_SIZE, y*B_SIZE, z*B_SIZE);
            block.render();
            GL11.glPopMatrix();
        }
    }
}