0

この qt opengl コードを実行しようとすると、なぜこのエラーが発生するのですか?

    // 4 bytes per pixel (RGBA), 1x1 bitmap
    QVector<unsigned char> pixels( 1 * 1 * 4 );
    glReadPixels( x, height - y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, &pixels[0]);

    qDebug() << "r: " << (int)pixels[0];
    qDebug() << "g: "   << (int)pixels[1];
    qDebug() << "b: "   << (int)pixels[2];
    qDebug() << "a: "   << (int)pixels[3];

正しい例を教えてください。また、色の配列を画面のピクセルに貼り付ける逆関数も探しています。

4

2 に答える 2

3

QVector は特定の種類のコードです。operator[]const と変更可能なバリアントの 2 つのバリアントがあります。また、1 つの演算子の使用方法がわかりにくくなる可能性があります。

とにかく、あなたのケースでは QVector を使用しないでください: オーバーヘッドが多すぎます (コンストラクターの呼び出し、内部メモリの割り当てなど)。シンプルな固定サイズのスコープ付き配列を使用します。

// 4 bytes per pixel (RGBA), 1x1 bitmap
GLubyte pixels[4];
glReadPixels( x, height - y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixels);

qDebug() << "r: " << (int)pixels[0];
qDebug() << "g: "   << (int)pixels[1];
qDebug() << "b: "   << (int)pixels[2];
qDebug() << "a: "   << (int)pixels[3];
于 2013-06-09T12:40:12.267 に答える