内部格式指定为GL_RGBA的哪种数据类型?

use*_*692 3 opengl

在OpenGL Wiki glTexImage2D中,它写道:

internalFormat指定纹理中颜色分量的数量。必须是表1给出的基本内部格式之一,表2给出的大小内部格式之一,或表3给出的压缩内部格式之一。

在《OpenGL编程指南》第9章中,纹理映射

根据定义,GL_LUMINANCE,GL_LUMINANCE_ALPHA,GL_RGB和GL_RGBA是宽大的,因为它们不需要特定的分辨率。

因此,如果我们将GL_RGBA分配给internalformat,则使用哪种数据类型?GPU处理器是否默认?

Ret*_*adi 5

用于的大小GL_RGBA是特别不确定的。

OpenGL 4.5规范的 “ 8.5纹理图像规范”一节,第153页(添加了重点):

内部分量分辨率是分配给纹理图像中每个值的位数。如果将internalformat指定为基本内部格式,则GL将使用自己选择的内部组件分辨率存储生成的纹理。

其中“基本内部格式”是指表8.11中列出的格式,其中包括GL_RGBA

我希望所选的格式通常是GL_RGBA8,但实际上并不能保证。如果您关心大小,则应使用大小格式。实际上,我认为您总是应该这样做。未调整大小的格式似乎仍然可以保持向后兼容性。我总是很惊讶他们没有在Core Profile中删除。例如,较新的glTexStorage*()入口点(glTexImage*()在许多用例中可以作为更好的替代品)仅接受大小合适的内部格式。