首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OptiX -> RGBA和垂直翻转

OptiX -> RGBA和垂直翻转
EN

Stack Overflow用户
提问于 2013-03-07 12:03:39
回答 1查看 1.1K关注 0票数 2

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

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

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

代码语言:javascript
复制
// 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];
    }
}

但渲染后的结果不是全绿屏幕,而是这样:

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-07 12:07:16

您的索引错误。

这是应该怎么做的:

代码语言:javascript
复制
rgba[(x + y * width) * 4]     = bgra[(x + y * width) * 4 + 2]
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15262855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档