当我尝试执行此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];
你能给我一个正确的例子吗?而且我也在寻找将颜色数组粘贴到屏幕像素的反向函数。
答案 0 :(得分:3)
QVector是一种特殊的代码。 operator[]
存在两种变体:const和可修改的变体。使用一个操作员的方式可能变得相当模糊。
无论如何,你不应该在你的情况下使用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];
答案 1 :(得分:1)
在黑暗中拍摄,但由于您在问题中添加了qt标记:height
应该是QGLWidget::height()
吗?如果是这样,你需要实际调用方法:)
glReadPixels( x, height() - y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixels);