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

标签 java opengl lwjgl

我正在研究一个用 Perlin Noise、Java 和 LWJGL 生成的无限世界。但我遇到了一个问题,有点难以解释,所以我制作了一个视频:http://youtu.be/D_NUBJZ_5Kw显然,问题在于所有地面之间的黑色空间。

我已经尝试使所有值加倍而不是 float ,但这并没有解决问题。

这是我正在使用的一段代码:

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 的 block 初始化时循环执行此操作。 vertexhelper 是我制作的一个类,它将所有内容放入数组中。

(我在这里使用 float ,但那是在进行数学计算之后,所以这应该不是问题)

最佳答案

我必须考虑高度图上的 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);

这解决了它。

关于java - 高度图上 2 个顶点之间的空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13903149/

相关文章:

java - Android 房间自定义更新 @Query 与字符串数组崩溃与 "sqlite syntax ? error"

java - 在 OS X 中设置 ANT_OPTS 的正确方法是什么?

c++ - glEnableClientState 已弃用

opengl - 如何使用 OpenGL 禁用纹理的模糊效果?

java - LWJGL FPS 相机旋转仅限于像素

java - 在android中使用liblame将pcm文件转换为mp3

java - JSON - 使用 Gson 反序列化动态对象

c++ - Qt桌面着色器编译问题

java - 薛定谔的错误,除非手动检查,否则 BufferedWriter 不会写入 TXT

Java LWJGL 正确渲染.obj