"cast" GL_R8到GL_BGRA

"cast" GL_R8 to GL_BGRA

本文关键字:GL BGRA R8 cast      更新时间:2023-10-16

我正在用OpenGL进行一些GPGPU编程。

我希望能够将所有数据写入格式为GL_R8的一维纹理,这样我基本上可以将其视为std:array对象。

然后在渲染过程中,我希望能够设置GPU应该如何读取图像,例如将其"投射"为1024x1024 BGRA。

这可能吗?

例如,我想做什么:

gpu::array<uint8_t> data(GL_R8, width*height*4);
gpu::bind(data, GL_TEXTURE0, gpu::format::bgra, width, height); 

然后使用缓冲区纹理。没有一条规则(据我所知)说你不能把同一个缓冲区挂接到多个不同的纹理上。这将允许一个纹理将其与GL_R8内部格式一起使用。另一个纹理可以将其与GL_RGBA8格式一起使用。