4

アニメーション表示をレンダリングし、glReadPixels() を使用してフレーム バッファーの内容をキャプチャする C++ Open GL アプリケーションがあり、これは 1D char 配列として格納されます。

次のように、バッファの内容を取得して char 配列に保存できます。

char * values = (char *) malloc(width * height * 4 * sizeof(char));
glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, values);

次に、ソケットを使用してこれらの生データをネットワーク経由で送信しますが、これは私にとっては問題ではありません。Qt デスクトップ クライアント (ソケットを使用して OpenGL アプリケーションと通信する) があります。

このクライアント プログラムは、Open GL アプリケーションから送信された生のバイナリ データを正常に受信できます。

クライアント アプリケーションでこれらのバイナリ データからイメージをレンダリングするにはどうすればよいですか? Qt には、バイナリ データ (glReadPixels から生成される) から画像を描画するための組み込み関数/ライブラリがありますか?

ソケット経由で送信する前に、これらの生のバイナリ データを base64 型としてエンコード/デコードする必要がありますか? なぜですか、そうでないのですか?

4

1 に答える 1

1

QImage には、既存のバッファ、幅、高さ、およびピクセル フォーマットを受け取る優れたコンストラクタがあります。それは始めるのに最適な場所のようです。

また、サーバーで QImage を作成すると、Qt の組み込みストリーミングを使用して QImage をクライアントに送信できます (QDataStreams は、ネットワーク ソケットを含むほぼすべての IO デバイスをラップできます)。そのため、エンコードとデコードを行う必要はありません。あなた自身 - Qt がすべてを処理します。

それが役立つことを願っています!

于 2012-03-21T03:09:51.603 に答える