QImage には、既存のメモリ バッファから QImage を作成するコンストラクタ QImage (uchar *data, int width, int height, int bytesPerLine, Format format) があります。
バイト (uchars) の順序はプラットフォームに依存しますか? アルファ、赤、緑、青の値をインデックスの増加とともに入れると、アルファは青と交換され、赤は緑と交換されます。これは、エンディアンに問題があることを示しています。
エンディアンがプラットフォームに依存するかどうかは疑問です。Qtのドキュメントには、これについて何も書かれていません。
プラットフォームに依存しない場合は、値を格納する順序を変更するだけです。
texture[ startIndex + 0 ] = pixelColor.blue();
texture[ startIndex + 1 ] = pixelColor.green();
texture[ startIndex + 2 ] = pixelColor.red();
texture[ startIndex + 3 ] = pixelColor.alpha();
プラットフォームに依存する場合は、uint32 の配列を作成し、alpha << 24 | として計算された値を格納します。赤 << 16 | 緑 << 8 | 青、および QImage() コンストラクターに渡す前に配列を reinterpret_cast します。
よろしくお願いします、
イェンス