GL_LUMINANCE:每个元素都是单个亮度值。 GL 将其转换为浮点,然后将其组装成RGBA元素 通过将亮度值复制三次,分别为红色,绿色和 蓝色并附加1表示alpha。
这也适用于WebGL吗?如果是这样,这是否意味着与使用RGBA相比,使用较少通道格式化的纹理(如LUMINANCE)不保存VRAM?
RAM怎么样?
答案 0 :(得分:2)
这也适用于WebGL吗?
是的,
这是否意味着与使用RGBA相比,使用较少通道格式化的纹理(如LUMINANCE)无法保存VRAM
不,虽然这是特定于实现的(并且一些实现确实选择在上载之前将数据扩展到RGBA)但扩展应该在运行中发生,基本上只是在从采样时为每个颜色分量提供一个相同的值。着色器中的这种纹理。
RAM怎么样?
一旦您致电texImage2D
,数据就会上传到VRAM,只要您不这样做就不会保存在RAM中(例如,通过保留数据参考)。
答案 1 :(得分:0)
GL_LUMINANCE
在OpenGL 3.2中已被弃用并删除。现在,您使用GL_R8
之类的枚举显式指定内部格式。实现使用指定的格式分配其内部存储(即使OpenGL规范中没有此保证,按照as-if规则)。我建议不要在WebGL中使用GL_LUMINANCE
。只需使用显式内部格式,并根据需要在着色器中展开它,或者通过纹理调整。