我有一个2遍渲染管道 - 延迟着色 - 用于点云渲染。 (GLSL 4.30&c ++ 17)
着色器管道:
Pointloud.vertex - > Pointcloud.fragment - > FullscreenQuad.vertex - > Deferred.fragment
我想要实现的是从Pointloud.vertex - > Pointcloud.fragment状态收集一些数据,并将纹理发送到Deferred.fragment着色器。
数据如:Vertex ID,Fragcoord.z和纹理坐标(在Pointcloud.vertex部分中可用)
基本上我想在Pointcloud.fragment着色器中创建2个纹理,在给定的纹理坐标位置存储dept信息,在另一个纹理中存储顶点ID在相同的坐标上。
是否可以在着色器中本地创建和写入纹理?重要的是解决这个问题,而不受c ++的影响。
着色器无法分配纹理和缓冲区等资源。他们可以使用资源,但他们无法创建它们。您必须在应用程序中创建任何此类资源。如果您无法修改应用程序的代码,那么就无需执行任何操作。