2

色ごとに1バイトの「生の」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];
    }
}

しかし、レンダリングされたときの結果は完全な緑色の画面ではありませんが、これは次のとおりです。

ここで何が間違っているのでしょうか?

4

1 に答える 1

5

インデックスが間違っています。

これはそれが行われるべき方法です:

rgba[(x + y * width) * 4]     = bgra[(x + y * width) * 4 + 2]
于 2013-03-07T04:07:15.687 に答える