Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WebGL一对多数据处理_Webgl_Stream Processing - Fatal编程技术网

WebGL一对多数据处理

WebGL一对多数据处理,webgl,stream-processing,Webgl,Stream Processing,是否有任何使用WebGL的方案允许将一条数据记录处理为以前未知数量的记录 例如,使用OpenGL,可以使用几何体程序根据顶点的属性对顶点进行乘法,从而输出未知长度的数据 是否有任何技巧可以以类似的方式使用WebGL,或者这仅在JavaScript端可能?是的,WebGL中没有几何体着色器(只有顶点和片段) 因此,是的,需要在JS端实现一些乘法功能,通过对gl.drawtangles/gl.drawerelements进行更多的数据或调用 一种可能适用的方法是拥有大量数据(比如三角形),并使用片段

是否有任何使用WebGL的方案允许将一条数据记录处理为以前未知数量的记录

例如,使用OpenGL,可以使用几何体程序根据顶点的属性对顶点进行乘法,从而输出未知长度的数据


是否有任何技巧可以以类似的方式使用WebGL,或者这仅在JavaScript端可能?

是的,WebGL中没有几何体着色器(只有顶点和片段)

因此,是的,需要在JS端实现一些乘法功能,通过对gl.drawtangles/gl.drawerelements进行更多的数据或调用

一种可能适用的方法是拥有大量数据(比如三角形),并使用片段着色器在算法上丢弃部分或全部数据。有点像乘法的反面。但是,如果您保持相同的三角形,并使用制服或纹理中较小的数据更改其处理,您至少可以避免发送大量不同数据的麻烦


要“丢弃”一个顶点,需要将其置于NDC(单位为-1到+1的立方体)之外,用于三角形的所有三个顶点。

如果使用三角形,我可以通过顶点着色器丢弃未使用的乘法。酷。但是,其余的将在光栅化到输出缓冲区时获得稀疏分布。所以我不会花费碎片计算来处理丢弃的那些,这很酷,但是我会为丢弃的那些有空的内存位置(例如未渲染的像素)。渲染之后,我需要以一种我认为非常昂贵的方式从稀疏填充的缓冲区收集结果。没有一种简单的重新打包方法可以去除所有的空像素…这是用于LOD的吗?可能是相互排斥的多边形集。类似于几何体的mipmap。还是有可能在每次平局时都推出新的顶点。是的,有一点,但不可能进行预处理。这是用于几何体细化的东西,像无限递归细分一样动态创建细节多边形。结果将被缓存,但CPU无法提供足够的性能来创建。也许可以通过片段着色器为每个输入记录计算新记录的数量。如果输出仍然保留记录的一些关键点(例如,将使用的纹理坐标写入片段),我们可以通过重复的区域生长过程来增长或收缩子记录所需的区域。在每次迭代中,一个具有高子计数的像素可以被分割成具有零子计数的像素,并且整个缓冲区被放大,直到没有子计数大于1的像素。理想情况下,链接到一条输入记录的像素数量与当时的子计数类似。然而,很难确定操作是否完成,或者何时增加像素缓冲区(例如,增加一倍大小)。