纹理像素指向云顶点吗?

问题描述 投票:0回答:1

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

但是这要求数据从GPU移到CPU,然后再移回,这可能会变得昂贵,尤其是对于视频而言。有没有办法移动数据直接从纹理到顶点列表,而无需离开GPU?

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

webgl
1个回答
0
投票

感谢Blindman67指出您可以在顶点着色器中访问纹理,我不知道这一点。您可以简单地使用texture2D(),有效的示例是WebGL的https://www.khronos.org/registry/webgl/conformance-suites/2.0.0/conformance/rendering/vertex-texture-fetch.html和WebGL2的http://webglsamples.org/WebGL2Samples/#texture_vertex。一个很好的搜索词是“ WebGL顶点纹理获取”。不要浪费时间(就像我一样)跟随旧链接,并尝试使诸如texture2DLodEXT()之类的调用正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.