http://doc.qt.io/archives/4.6/opengl-2dpainting.html을 보시고, 다음 인용문을 찾을 수 있습니다 : "[QGLWidget] paintEvent()를 다시 구현하고 QPainter를 사용하여 장치에서 그릴 수 있습니다. 유일한 차이점은 페인팅 작업이 시스템의 OpenGL 드라이버에서 지원되는 경우 하드웨어에서 가속된다는 것입니다. "
첫 번째 질문에 대한 대답은 '예'입니다. 이것은 당신의 질문에 대한 대답
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);
}
}
:
구현의 정확한 세부 사항을 파악 대한
, 이제 (인터넷을 검색하여 찾을 수 있습니다) QOpenGLPaintEngine
에서 소스 코드의 조각에 빠른 들여다 보자 QImages에 관해서는 실제로 텍스처를 사용하여 그려집니다.
매우 보입니다. 문서에서 - QPainter 등을 사용하여 위젯의 내용을 그리는 대신 표준 OpenGL 렌더링 명령을 사용합니다. – tathagata
@ tathagata : 불행히도 당신은 upvote에도 불구하고 틀렸어; 질문에 대한 내 대답을 읽어주십시오. –
Greg에게 감사드립니다. 나는 논리적 추측을하고 있었다. 내가 틀렸다고 생각해. – tathagata