我对使用gpu apis比较陌生,甚至比wgpu还新,想把计算着色器画到一个表面上搞得乱七八糟。然而,似乎这不是直接允许的?
在运行时试图从表面创建一个绑定到纹理视图时,一个错误声明STORAGE BINDING位是必需的,然而,在表面配置期间不允许定义该位。我也尝试让着色器将纹理作为常规纹理而不是存储纹理接受,但这会带来绑定无效的错误。
有没有一个好的方法可以直接写入表面纹理,或者有必要创建一个单独的存储纹理?引擎盖下的渲染管道不直接写入表面的纹理视图吗?如果是一个单独的纹理(我猜是这样),有没有一个最好的方法可以遵循?
1条答案
按热度按时间41zrol4v1#
计算着色器无法直接写入表面纹理,这是片段着色器的职责。
由于交换链使用双缓冲或多缓冲技术,因此表面纹理逐帧变化;另外,表面纹理的用法是
RENDER_ATTACHMENT
,这意味着它只能用于RenderPass
的color_attachments;计算着色器只能输出
Storaga Buffer
和Storage Texture
,这两种类型的数据可以通过绑定到片段着色器来使用。