пиксели текстуры для вершин облака точек? - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь переместить пиксели изображения текстуры на набор вершин, чтобы я мог использовать их в качестве облака точек в WebGL. Один из способов сделать это - визуализировать текстуру в кадровый буфер, затем с помощью gl.readPixels () перейти на массив javascript, а затем переместить массив обратно в графический процессор с помощью gl.bufferData (). Обрабатывая данные как вершины, облако точек можно визуализировать с помощью gl.drawArrays () с использованием примитива gl.POINTS.

Но для этого требуется, чтобы данные перемещались из графического процессора в ЦП и обратно, это может стать дорогостоящим, особенно для видео. Есть ли способ переместить данные непосредственно из текстуры в список вершин, не покидая графический процессор?

Любые ссылки, предложения или примеры кода приветствуются!

1 Ответ

0 голосов
/ 03 мая 2020

Спасибо Blindman67 за указание на то, что вы можете получить доступ к текстурам в вершинном шейдере, я этого не знал. Вы можете просто использовать texture2D (), рабочие примеры: https://www.khronos.org/registry/webgl/conformance-suites/2.0.0/conformance/rendering/vertex-texture-fetch.html для WebGL и http://webglsamples.org/WebGL2Samples/#texture_vertex для WebGL2. Хорошим поисковым термином является «выборка вершин WebGL». Не тратьте время (как я это делал) на старые ссылки и пытайтесь заставить вызовы типа texture2DLodEXT () работать.

...