我正在尝试为我的体素游戏生成 10*10*10 block block ,渲染 1 block 完全没问题,但是当我使用 for 循环时,它会变得困惑,以下正确吗?:
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);
}
附注:block.render();是一个我渲染 1f*1f*1f 立方体的类,它也有自己的 vector3f,这就是我可以翻译它的原因。
最佳答案
我会从更简单的版本开始。而不是调整每个 block 的矩阵。将当前矩阵压入堆栈。将其翻译为绘制单个 block 。然后,弹出将其重置为原始状态。
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();
}
}
}
关于java - 如何使用 for 循环生成简单地形 [voxel],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17126903/