为什么OPENGL缺少无符号的16位RGB格式



我一直在使用GL_R16格式的16位单色纹理。这很好用。我现在需要一个3通道的16位纹理。

不过,当检查手册页glTexStorage2D时,我发现功能上似乎存在差距。

一个通道可用:GL_R16

有两个通道可用:GL_RG16

有四个通道可用:GL_RGBA16

但有三个通道,仅具有SNORM(签名归一化(风格:GL_RGB16_NORM

GL_RGB16发生了什么?增加第四频道似乎很浪费,所以我想避免这种情况。我还想避免处理-1.1个样本,因为我的数据是无符号的。

GL_RGB16发生了什么?

很好。根据OpenGL 4.6核心配置文件规范中的表8.12,它是一种允许的格式,对于纹理也是一种需要支持的格式(与使用这种纹理作为渲染到纹理的帧缓冲区附件时形成对比(。

那些OpenGL";参考页";不幸的是,它们是出了名的不完整、过时、经常误导,有时甚至完全错误。唯一可靠的文档来源是OpenGL规范。

添加第四个通道似乎很浪费,所以我想避免

硬件如何处理这种格式完全是另一回事。例如,任何真实世界的GPU都会在内部将GL_RGB8填充到RGBA,因为它们不喜欢3字节对齐的纹素。如果他们也不喜欢GL_RGB16的6字节数组,我也不会感到惊讶。

相关内容

  • 没有找到相关文章

最新更新