0

我正在用 C# 开发一个相机接口。

我有一个 HDR 相机,可以生成 24 位 HDR 原始图像。
原始图像缓冲区是一个字节数组 byte[],每个 Bayer tile 有 3 个字节。

我正在寻找一种使用 OpenTK(OpenGL 的 C# 包装器)将此数组缓冲区作为纹理传递给 GPU 的方法。然后将原始图像像素去马赛克为 24 位 RGB 像素,然后将其色调映射为 8 位 RGB 像素。

我看到了一些使用亮度像素格式的示例代码:

GL.BindTexture(TextureTarget.Texture2D, this.handle);
GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Luminance, width, height, 0, PixelFormat.Luminance, PixelType.UnsignedByte, imageBuffer);
GL.BindTexture(TextureTarget.Texture2D, 0);

但我不确定片段着色器如何将这种像素格式的图像缓冲区采样为彩色像素。不确定这是否是 24 位像素的正确方法。

我还尝试了从字节数组图像缓冲区创建一个整数数组 (int[]) 的选项,方法是将每 3 个字节组合成 CPU 上的一个 int。但后来我遇到了类似的问题,将整数数组作为纹理传递给 GPU。不确定这里应该应用什么像素格式。

有人能指出我正确的方向吗?

4

0 回答 0