Werfen Sie einen Blick auf http://doc.qt.io/archives/4.6/opengl-2dpainting.html für ein lehrreiches Beispiel, wo Sie auch das folgende Zitat finden: "Es ist möglich, seine [QGLWidget] paintEvent() zu replizieren und QPainter auf dem Gerät zu zeichnen, genau wie Sie würde mit einem QWidget. Der einzige Unterschied ist, dass die Malvorgänge in Hardware beschleunigt werden, wenn es von den OpenGL-Treibern Ihres Systems unterstützt wird. "
Also, die Antwort auf Ihre erste Frage ist ja.
Für die genaue Einzelheiten der Durchführung herauszufinden, wollen sie sich ein Stück Sourcecode von QOpenGLPaintEngine
einen schnellen Blick nehmen (die durch die Suche im Internet zu finden sind):
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);
}
}
dies Ihre Frage beantwortet In Bezug auf QImages werden sie tatsächlich mit Texturen gezeichnet.
Sieht sehr unwahrscheinlich aus. Aus den Dokumenten - außer dass Sie den Inhalt des Widgets nicht mit QPainter usw. zeichnen, verwenden Sie die standardmäßigen OpenGL-Rendering-Befehle. – tathagata
@tathagata: leider liegst du falsch, trotz der upvote; Bitte lies meine Antwort auf die Frage. –
Danke Greg, dass du das herausgebracht hast! Ich habe nur eine logische Vermutung gemacht. Ich vermute, ich lag falsch. – tathagata