void GLC_WorldTo3dxml::writeImageFileIn3dxml(const QList<GLC_Material*>& materialList) { const int size= materialList.size(); Q_ASSERT(size == m_MaterialIdToTexture3dxmlName.size()); for (int i= 0; i < size; ++i) { const GLC_Material* pCurrentMaterial= materialList.at(i); const GLC_Texture* pTexture= pCurrentMaterial->textureHandle(); const QString imageName(m_MaterialIdToTexture3dxmlName.value(pCurrentMaterial->id())); // Get the texture image if (!pTexture->fileName().isEmpty()) { // Try to load the texture QImage textureImage(pTexture->fileName()); if (! textureImage.isNull()) { addImageTextureTo3dxml(textureImage, imageName); } else { addImageTextureTo3dxml(pTexture->imageOfTexture(), imageName); } } else { addImageTextureTo3dxml(pTexture->imageOfTexture(), imageName); } } }
void draw(SkCanvas* canvas) { auto drawImage = [=](sk_sp<SkImage> image, const char* label) -> void { if (nullptr == image) { return; } SkPaint paint; paint.setAntiAlias(true); canvas->drawImage(image, 0, 0); canvas->drawString(label, image->width() / 2, image->height() / 4, paint); if (canvas->getGrContext()) { canvas->drawString(image->isValid(canvas->getGrContext()) ? "is valid on GPU" : "not valid on GPU", 20, image->height() * 5 / 8, paint); } canvas->drawString(image->isValid(nullptr) ? "is valid on CPU" : "not valid on CPU", 20, image->height() * 7 / 8, paint); }; sk_sp<SkImage> bitmapImage(SkImage::MakeFromBitmap(source)); sk_sp<SkImage> textureImage(SkImage::MakeFromTexture(canvas->getGrContext(), backEndTexture, kTopLeft_GrSurfaceOrigin, kRGBA_8888_SkColorType, kOpaque_SkAlphaType, nullptr)); drawImage(image, "image"); canvas->translate(image->width(), 0); drawImage(bitmapImage, "source"); canvas->translate(-image->width(), image->height()); drawImage(textureImage, "backEndTexture"); }
void CubeView::initializeGL(QGLPainter *painter) { QGLBuilder builder; builder.newSection(QGL::Faceted); builder << QGLCube(1.5f); cube = builder.currentNode(); builder << QGLTeapot(); teapot = builder.currentNode(); scene = builder.finalizedSceneNode(); scene->setParent(this); fbo = new QGLFramebufferObject(512, 512, QGLFramebufferObject::Depth); QImage textureImage(":/qtlogo.png"); qtlogo.setImage(textureImage); painter->setBlendingEnabled(true); }