BGRA - > RGBA和垂直翻转,OptiX

时间:2013-03-07 04:03:39

标签: c++ graphics cuda rgba optix

我有一个包含“原始”BGRA纹理的缓冲区,每种颜色一个字节。 线条顺序相反(纹理颠倒)。

BGRA缓冲区全部为绿色(0,255,0,255)。

我需要将其转换为RGBA并翻转纹理线。 我试过这个:

// bgra is an  unsigned char*

int width = 1366;
int height = 768;    

unsigned char* rgba = new unsigned char[width * height * 4];

for(int y = height - 1; y >= 0; y--)
{
    for(int x = 0; x < width; x++)
    {
        rgba[(x * y * 4)]     = bgra[(x * y * 4) + 2];
        rgba[(x * y * 4) + 1] = bgra[(x * y * 4) + 1];
        rgba[(x * y * 4) + 2] = bgra[(x * y * 4)];
        rgba[(x * y * 4) + 3] = bgra[(x * y * 4) + 3];
    }
}

但渲染时的结果不是一个完整的绿色屏幕,但是:

我可能在这里做错了什么?

1 个答案:

答案 0 :(得分:5)

您的索引错误。

这是应该做的:

rgba[(x + y * width) * 4]     = bgra[(x + y * width) * 4 + 2]