高度图上2个顶点之间的空格

时间:2012-12-16 16:17:45

标签: java opengl lwjgl

我正在研究用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是我创建的一个类,它只是将所有内容放在一个数组中。

(我在这里使用花车,但这是在做数学之后,所以这应该不是问题)

1 个答案:

答案 0 :(得分:1)

我不得不在帐户的高度图上取4个位置而不是2.所以而不是

height2 = (float) ((getHeight(x-1, y-1) + height) / 2);

我必须使用

height2 = (float) ((getHeight(x, y-1) + getHeight(x-1, y) + getHeight(x-1, y-1) + height) / 4);

修正了它。