我正在尝试为我的体素游戏生成一个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,这就是我可以翻译它的原因。
答案 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();
}
}
}