我尝试在我的计算着色器中定义这个image2D
变量,以便存储将来渲染所需的一些数据:
layout ( binding = 8, rgba32f) writeonly uniform image2D MyTexture ;
然而,这似乎无法工作,因为当我编译这个着色器时,它给了我以下错误信息:
Error: image binding must be less than "GL_MAX_IMAGE_UNITS" (8)
我已经在之前的代码中定义了8个image2D
纹理。似乎显卡上没有足够的GL_IMAGE_UNIT
插槽(我的计算机实际上使用的是核心显卡Intel(R)HD Graphics 620)。我该如何解决这个问题?有没有办法避免使用第8个图像单元?或者我必须移动到另一台计算机来完成我的工作,这真的很麻烦。
1条答案
按热度按时间m3eecexj1#
使用一个
image2DArray
而不是多个image2D
。对于image2DArray
,您需要1个图像单位。image2DArray
可以包含多个相同大小和格式的2D图像层。因此,您可以通过将多个二维图像绑定到一个二维图像数组中来减少所使用的图像单位数。