阅读文档我看到 glGetTexImage2d() 函数有一个“类型”参数。文档说类型参数“指定像素数据的数据类型”,并给出了一些类型的示例,例如 GL_INT、GL_BYTE 等。
但是当图像格式为 GL_RGBA 和 GL_INT 时,这究竟意味着什么?它是每个通道的 int 吗?还是整个颜色的int?如果它是整个颜色的 int ,那么这与 GL_BYTE 真的不一样吗?因为 int 中有 4 个字节,所以每个通道都有一个字节
阅读文档我看到 glGetTexImage2d() 函数有一个“类型”参数。文档说类型参数“指定像素数据的数据类型”,并给出了一些类型的示例,例如 GL_INT、GL_BYTE 等。
但是当图像格式为 GL_RGBA 和 GL_INT 时,这究竟意味着什么?它是每个通道的 int 吗?还是整个颜色的int?如果它是整个颜色的 int ,那么这与 GL_BYTE 真的不一样吗?因为 int 中有 4 个字节,所以每个通道都有一个字节
type参数指定发送到 OpenGL 的缓冲区内数据的有效类型。
此处的目的是 OpenGL 将进入您的缓冲区,并想知道存在多少元素 ( width * height * internalformat
) 以及它们的大小和解释 ( type
)。
例如,如果您要提供一个包含红色/绿色/蓝色/alpha 通道(按此顺序)的无符号整数数组,则需要指定:
target
:GL_TEXTURE_2D
level
: 0 (除非你使用 mipmaps)internalformat
: 4 因为你有红色、绿色、蓝色和 alphawidth
: 640height
: 480border
: 0internal format
: GL_RGBA 告诉 opengl 我们通道的顺序,以及它们的含义type
:GL_UNSIGNED_INT
会让opengl知道我们数组中元素的类型pixels
: 指向你的数组的指针它是每个通道的 int。RGBA 表示每个像素在您提供的数据数组中都有 R、G、B 和 A 整数(如果将其设置为整数)。RBGA(如果存在,不确定)也意味着四个整数,但顺序不同。RGB 意味着只有三个(没有 alpha 通道)。