2012-12-16 34 views
1

我正在使用Perlin噪聲,Java和LWJGL生成無限世界。但是我有一個問題,這是很難解釋,所以我做了一個視頻:http://youtu.be/D_NUBJZ_5Kw顯然問題是所有地塊之間的黑色空間。高度圖上2個頂點之間的空間

我已經嘗試使所有值雙打而不是浮動,但沒有解決它。

這裏是一段代碼我使用:

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); 

通過此I環在以x-> 16和y> 16的組塊的初始化。 vertexhelper是我創建的一個類,它將所有內容放在一個數組中。

(我用的花車在這裏,但在做數學後的,所以這不應該是一個問題)

+0

如果您將瓷磚着色爲綠色並且不使用任何紋理,是否也會出現這種情況? – Matthias

+1

@Matthias是的,我有沒有紋理相同的問題。 – Sietse

回答

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); 

問題解決了。

+0

請記住,你可以接受你自己的答案(不會得到你的代表),將其標記爲已回答。 – datenwolf

+0

@datenwolf我知道,但只有2天后。謝謝 – Sietse