Mire http://doc.qt.io/archives/4.6/opengl-2dpainting.html para un ejemplo instructivo, donde también puede encontrar la siguiente cita: "es posible volver a implementar su [QGLWidget] paintEvent() y usar QPainter para dibujar en el dispositivo, igual que lo haría con un QWidget. La única diferencia es que las operaciones de pintura se acelerarán en el hardware si es compatible con los controladores OpenGL de su sistema ".
Entonces, la respuesta a su primera pregunta es sí.
Para averiguar los detalles exactos de la aplicación, vamos a echar un vistazo rápido a un trozo de código fuente de QOpenGLPaintEngine
(que se puede encontrar buscando en el Internet):
void QOpenGLPaintEngine::drawImage(const QRectF &r, const QImage &image,
const QRectF &sr, Qt::ImageConversionFlags)
{
Q_D(QOpenGLPaintEngine);
if (d->composition_mode > QPainter::CompositionMode_Plus
|| d->high_quality_antialiasing && !d->isFastRect(r))
d->drawImageAsPath(r, image, sr);
else {
GLenum target = (QGLExtensions::glExtensions
& QGLExtensions::TextureRectangle)
? GL_TEXTURE_RECTANGLE_NV
: GL_TEXTURE_2D;
if (r.size() != image.size())
target = GL_TEXTURE_2D;
d->flushDrawQueue();
d->drawable.bindTexture(image, target);
drawTextureRect(image.width(), image.height(), r, sr, target);
}
}
Esto responde a su pregunta con respecto a QImages, de hecho se dibujan con texturas.
Parece muy poco probable. Desde los documentos, excepto que en lugar de dibujar los contenidos del widget usando QPainter, etc., utiliza los comandos estándar de renderizado de OpenGL. – tathagata
@tathagata: lamentablemente te equivocas, a pesar del voto en contra; por favor lea mi respuesta a la pregunta. –
Gracias Greg, por señalar eso! Solo estaba haciendo una suposición lógica. Supongo que estaba equivocado. – tathagata