Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия, Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки
Пишу программу, она составляет массив данных (координат) и потом что-то рисует. Когда массив выходит за примерно 40 тысяч, впечатление, что он перестаёт расти (судя по нарисованной картинке). Это действительно предел и можно ли как-то бороться?
warlock66613
Re: Сколько влезает в массив javascript?
15.04.2018, 10:44
Скорее у вас в коде что-то не то.
george66
Re: Сколько влезает в массив javascript?
15.04.2018, 11:45
Код простой: цикл в цикле, вычисляют координаты точек на сфере (первый цикл по параллелям, второй по меридианам). Если общее число точек превышает примерно 90 тысяч (сейчас проверил), рисуется только "шапочка" от сферы (тем меньшая, чем больше задать число параллелей и меридианов).
warlock66613
Re: Сколько влезает в массив javascript?
15.04.2018, 12:02
Последний раз редактировалось warlock66613 15.04.2018, 12:04, всего редактировалось 1 раз.
Значит, надо отлаживать, смотреть что происходит. Найти первую проблемную итерацию (заодно выяснить, всегда ли она точно одна и та же), посмотреть во что превращается массив, какие координаты уходят в OpenGL вызовы.
-- 15.04.2018, 13:04 --
Попробовать нарисовать только проблемную часть (то есть пропустить первые итерации). В общем, первый этап решения таких проблем — сбор информации, как можно больше.
george66
Re: Сколько влезает в массив javascript?
15.04.2018, 12:06
Последний раз редактировалось george66 15.04.2018, 12:06, всего редактировалось 1 раз.
Мне кажется, я где-то читал про ограничение (типа, в массив javascript влезает не больше 90 тысяч), но я не помню, где. Кто-нибудь пробовал массивы с сотнями тысяч?
var arr =[1]; var i; for(i =0; i <100000; i++){
arr.push(i); }
console.log(arr.length);
У меня этот код выводит в консоль 100001, что явно больше, чем 90000.
george66
Re: Сколько влезает в массив javascript?
15.04.2018, 13:01
А попробуйте миллион. 90 тысяч точек -- это по три числа каждая.
rockclimber
Re: Сколько влезает в массив javascript?
15.04.2018, 13:30
А вы сами попробуйте У меня работает. И десять миллионов работает, хотя браузер уже задумывается на несколько секунд.
george66
Re: Сколько влезает в массив javascript?
15.04.2018, 14:47
Да, вставил счётчики в свой код, массивы растут правильно. Буду думать, спасибо.
george66
Re: Сколько влезает в массив javascript?
15.04.2018, 17:31
Я подумал -- может, это WebGL ограничение. Не передаётся сразу миллион чисел. Где-то я видел что-то такое, но не помню, где.
warlock66613
Re: Сколько влезает в массив javascript?
15.04.2018, 18:04
Вот это вполне возможно. Какой конкретно вызов вы используете?
george66
Re: Сколько влезает в массив javascript?
22.04.2018, 14:01
Последний раз редактировалось george66 22.04.2018, 14:05, всего редактировалось 1 раз.
Проблема решена, это было ограничение WebGL. Некоторые натуральные числа (индексы) там передаются как UNSIGNED_SHORT и их не хватает. Решение состоит в переходе на WebGL2, где можно использовать UNSIGNED_INT
-- 22.04.2018, 14:05 --
В функции gl.drawElements заменить gl.UNSIGNED_SHORT на gl.UNSIGNED_INT Строку gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(indexData), gl.STATIC_DRAW); заменить на gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint32Array(indexData), gl.STATIC_DRAW);