Хорошо, это довольно большой вопрос.Я сделал рендеринг местности с использованием JS, хотя он был ограничен одной плиткой.
Я думаю, что то, что вы описываете, безусловно возможно с WebGL и Javascript, и, возможно, лучше, чем альтернативы.Существует множество учебных пособий по началу работы с WebGL (например, , основанных на оригинальных учебных пособиях NeHe OpenGL ).Javascript - это гибкий и выразительный язык, на котором вы можете найти множество ресурсов (Даг Крокфорд обладает некоторыми из лучших идей и рекомендаций).
Что касается вашей конкретной проблемы, я бы сгенерировал несколько дескрипторов дляваши плитки, в том числе размер, положение и максимальные и минимальные высоты внутри каждой плитки.Затем используйте область просмотра (область, видимую перед вашей «камерой») и ограничивающий кубоид ваших плиток (определяемый их положением и максимальными / минимальными высотами), чтобы определить, какие из них видны.Вы можете отказаться от любого после указанного максимального расстояния просмотра.Получив набор видимых плиток, вы теперь можете визуализировать их по отдельности.
Я не знаю, в каком формате находятся ваши плитки: либо сетку высот (которую удобно хранить в виде стандартных изображений), либовекторное описание, но это определяет, как вы будете их рендерить.Для сетки высот самый простой способ их визуализации - это несколько полос треугольников.Это означает создание некоторых больших буферов вершин, но вы можете сделать что-то умное.Помимо определенного количества плиток, вам придется управлять тем, какие из них хранятся в виде данных буфера WebGL (и несжатых изображений), а какие освобождаются.
Поскольку ваш вопрос довольно общий и высокий уровень, я 'оставлю мой ответ похожим.Это звучит как интересный проект, и я буду рад любым более конкретным вопросам, которые у вас могут возникнуть.