我正在研究一个由 Perlin Noise、Java 和 LWJGL 生成的无限世界。但是我遇到了一个问题,这有点难以解释,所以我制作了一个视频:http: //youtu.be/D_NUBJZ_5Kw显然问题是所有地面之间的黑色空间。
我已经尝试使所有值加倍而不是浮点数,但这并没有解决问题。
这是我正在使用的一段代码:
float height2, height = (float)getHeight(x, y);
height2 = (float) ((getHeight(x-1, y+1) + height) / 2);
vertexhelper.addVertexColorAndTexture(x, height2, y+1, r, g, b, a, 0f, 1f);
height2 = (float) ((getHeight(x+1, y+1) + height) / 2);
vertexhelper.addVertexColorAndTexture(x+1, height2, y+1, r, g, b, a, 1f, 1f);
height2 = (float) ((getHeight(x+1, y-1) + height) / 2);
vertexhelper.addVertexColorAndTexture(x+1, height2, y, r, g, b, a, 1f, 0f);
height2 = (float) ((getHeight(x-1, y-1) + height) / 2);
vertexhelper.addVertexColorAndTexture(x, height2, y, r, g, b, a, 0f, 0f);
我在初始化 x->16 和 y->16 的块时循环遍历它。vertexhelper
是我做的一个类,它只是把所有东西都放在一个数组中。
(我在这里使用浮点数,但那是在做数学之后,所以这应该不是问题)