如何将纹理像素应用于点云顶点



我正试图将纹理上图像的像素移动到一组顶点上,这样我就可以在WebGL中将它们用作点云
这样做的一种方法是将纹理渲染到帧缓冲区,然后使用gl.readPixels()移动到JavaScript数组上,然后用gl.bufferData()将数组移回GPU
将数据视为顶点,可以使用gl.POINTS基元使用gl.drawArrays()渲染点云。

但这需要数据从GPU移动到CPU,然后再移动回来,这可能会变得昂贵,尤其是对于视频
是否有一种方法可以在不离开GPU的情况下将数据直接从纹理移动到顶点列表?

非常感谢任何参考、建议或代码示例!

感谢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((这样的调用发挥作用。

最新更新