एक निर्देशक उदाहरण के लिए http://doc.qt.io/archives/4.6/opengl-2dpainting.html पर एक नज़र डालें, जहां आप निम्न उद्धरण भी प्राप्त कर सकते हैं: "अपने [QGLWidget] paintEvent() को फिर से कार्यान्वित करना संभव है और डिवाइस पर आकर्षित करने के लिए QPainter का उपयोग करना, जैसा कि आप एक QWidget के साथ होगा। केवल अंतर यह है कि पेंटिंग ऑपरेशंस हार्डवेयर में तेज़ हो जाएंगे यदि यह आपके सिस्टम के ओपनजीएल ड्राइवरों द्वारा समर्थित है। "
तो, आपके पहले प्रश्न का उत्तर हाँ है।
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 के संबंध में, वे वास्तव में बनावट का उपयोग कर खींचे जाते हैं।
स्रोत
2010-07-01 12:46:51
बहुत असंभव लगता है। दस्तावेज़ों से - सिवाय इसके कि QPainter आदि का उपयोग करके विजेट की सामग्री को चित्रित करने के बजाय आप मानक ओपनजीएल प्रतिपादन आदेशों का उपयोग करते हैं। – tathagata
@tathagata: दुर्भाग्यवश आप अपवित्र होने के बावजूद गलत हैं; कृपया प्रश्न का मेरा जवाब पढ़ें। –
धन्यवाद ग्रेग, यह इंगित करने के लिए! मैं बस एक तार्किक अनुमान बना रहा था। मुझे लगता है कि मैं गलत था। – tathagata