Здравствуйте, я немного новичок в программировании на 3d. Я пытаюсь улучшить эффективность системы частиц, которую я имитирую с помощью жидкой забавы. В настоящее время я рисую систему частиц таким образом:Как использовать объекты буфера вершин в webgl для размещения частиц
for (var j = 0; j < maxParticleSystems; j++) {
var currentParticleSystem = world.particleSystems[j];
var particles = currentParticleSystem.GetPositionBuffer();
var maxParticles = particles.length;
for (var k = 0; k < maxParticles; k += 2) {
context.drawImage(particleImage, (particles[k] * mToPx) + offsetX, (particles[k + 1] * mToPx) + offsetY);
context.fill();
}
}
Это в основном черпает каждую частицу поштучно, которая очень медленно. Я читал о позициях Buffer в webGL. Как я могу использовать их?
WebGL это совершенно отдельный контекст от 2d контекста холста, и они не могут работать вместе. (вы используете 2d canvas из context.drawImage). Если вы абсолютно ничего не знаете о webgl, то трудно предложить что-либо, кроме взгляда на учебные пособия по webgl, или найти библиотеку webgl, которая сделает все, что вам нужно. Может быть, pixi.js? –
Возможно, дубликат http://stackoverflow.com/questions/15215968/efficient-particle-system-in-javascript-webgl – gman
@WaclawJasper Эй, я смотрел учебники по webgl. Я видел, как они делают то, что рекомендует gman ниже. Кажется, что все они демонстрируют позиционирование вычисляющих частиц, основанное только на времени в шейдере или что-то в этом роде. Другие, похоже, позиционируют частицы последовательно, что не то, что я читал, было бы идеальным. Я читал, что «примитивы не следует создавать последовательно, а все сразу использовать объекты буфера позиции». Я пытаюсь понять, как это сделать. – xerotolerant