Я загружаю значения фрагментов из карты высот для создания бесконечного ландшафта, но у меня возникают проблемы с отрисовкой каждого фрагмента me sh. Когда я загружаю одну единицу 500x500 меня sh, это гладкий я sh. Когда я загружаю сетки 5x5 из 100x100, это беспорядок. карта с постепенным изменением значений.
... Но когда я их визуализирую, я вижу вот что: 500x500 me sh 5x5 100x100 me sh
Как видите, 5x5 me sh совсем не выровнен. Первые три фрагмента 0: 0, 0: 1 и 1: 0 кажутся правильными, но все остальные разные. Все повороты в их матрице преобразования - vec3 (0,0,0), но они генерируются следующим образом. Вот код, используемый для их рендеринга:
public void render() {
shader.start();
shader.loadViewMatrix(Maths.createViewMatrix(engine.getPlayer()));
shader.loadLight(engine.getManagers().getLightManager().getLights().get(0));
for(Chunk chunk : engine.getManagers().getTerrainManager().getLoadedChunks().values()) {
RawModel model = chunk.getModel();
bindChunk(chunk);
loadShaderUniforms(chunk);
GL11.glDrawElements(GL11.GL_TRIANGLES, model.getVertexCount(), GL11.GL_UNSIGNED_INT, 0);
unbindChunk();
}
shader.stop();
}
private void bindChunk(Chunk chunk) {
RawModel rawModel = chunk.getModel();
GL30.glBindVertexArray(rawModel.getVaoID());
GL20.glEnableVertexAttribArray(0); // position
GL20.glEnableVertexAttribArray(1); // textureCoordinates
GL20.glEnableVertexAttribArray(2); // normal
ModelTexture texture = chunk.getTexture();
GL13.glActiveTexture(GL13.GL_TEXTURE0);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, texture.getTextureID());
}
private void unbindChunk() {
GL20.glDisableVertexAttribArray(0);
GL20.glDisableVertexAttribArray(1);
GL20.glDisableVertexAttribArray(2);
}
private void loadShaderUniforms(Chunk chunk) {
Matrix4f transformation = Maths.createTransformationMatrix(chunk.getLocation().getPosition(),
chunk.getLocation().getRotation(), 1, true);
System.out.println(chunk.getLocation().getRotation());
shader.loadTransformationMatrix(transformation);
shader.setShowHeightMap(chunk.shouldShowHeightMap());
}
Я не знаком с деталями того, как LWJGL использует VAO, так что это может быть простая проблема, которую я забываю. Любая помощь будет принята с благодарностью, так как я потратил несколько дней на то, чтобы сузить проблему до проблемы рендеринга вместо проблемы с генерацией шума perlin / me sh.