http://doc.qt.io/archives/4.6/opengl-2dpainting.htmlで有益な例をご覧ください。次の引用も見つかります。() を使用し、QWidget を使用する場合と同様に、QPainter を使用してデバイスに描画します。唯一の違いは、システムの OpenGL ドライバーでサポートされている場合、描画操作がハードウェアで高速化されることです。"
したがって、最初の質問に対する答えはイエスです。
実装の正確な詳細を理解するために、ソースコードの一部を簡単に見てみましょうQOpenGLPaintEngine
(インターネットを検索すると見つかります)。
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);
}
}
これは、QImages に関する質問に答えます。実際にテクスチャを使用して描画されます。