我有一系列纹理堆叠在一起(使用 mip-map-style 分辨率金字塔)以达到最终图像。
由于它们的堆叠方式,当它们没有被有意义的图像数据填充时,有必要将它们初始化为无符号整数值 128。IE,128 为零,因为渲染着色器将从每个纹理值中减去 0.5,这允许后续的金字塔层将最终图像偏移正值或负值。
我似乎无法弄清楚如何将(单通道 GL_LUMINANCE)纹理初始化为一个值!
我尝试将其设置为渲染缓冲区目标并向其渲染多边形,但 FBO 似乎被标记为不完整。我也尝试将其定位为渲染缓冲区目标并使用 gl.clear(gl.COLOR_BUFFER_BIT) 但它再次被认为是不完整的。
显而易见的事情是使用 gl.texSubImage2D() 复制值,但这似乎真的很慢......也许这是唯一的方法?我希望有一些更优雅的东西,它不需要分配这么多内存(至少一个帧的单个值的价值)并且如此缓慢(因为当所有数据都是单个值时,必须将所有数据写入缓冲区)。
在 WebGL 中将纹理设置为(默认)值的唯一方法似乎是调整它的大小或分配它,这会将其设置为全零。
此外,似乎没有像 gl.SIGNED_BYTE 这样的复制模式允许零为零(IE,有符号值进来)......但这也不能解决将纹理初始化为单个的问题值(在本例中为零)。
有任何想法吗?除了简单地将值复制到其中之外,如何将 WebGL 纹理初始化为一个值?