Я не полностью прочитал ваш код, но у меня были похожие проблемы, когда я использовал Uint16Array
для хранения индексов. Это означает, что количество используемых вами вершин потребует использования буфера 32-битных индексов.
Попробуйте изменить код на:
var indices = new Uint32Array(nrElems * nrElems * 2 * 3);
var linesIndices = new Uint32Array(nrElems * nrElems * 2 * 4);
Также для звонка gl.drawElements
используйте gl.UNSIGNED_INT
вместо gl.UNSIGNED_SHORT
.
Согласно комментарию gman, вы также должны проверить наличие расширения OES_element_index_uint , в противном случае вы получите ошибку
Вас также может заинтересовать этот ответ