1

I use Qt3D in my project, I need to change texture of the plane dynamicly. For this I use my implementation of QAbstractTextureImage. I do:

auto planeMaterial = new Qt3DExtras::QTextureMaterial();
Qt3DRender::QTexture2D *planeTexture = new Qt3DRender::QTexture2D();
auto *planeTextureImage = new PaintedTextureImage();
planeTextureImage->update();
planeTexture->addTextureImage(planeTextureImage);
planeMaterial->setTexture(planeTexture);

Qt3DCore::QTransform *planeTransform = new Qt3DCore::QTransform();
planeTransform->setRotationX(90);
planeTransform->setTranslation(QVector3D(0.0f, 0.0f, 15.0f));

auto planeEntity = new Qt3DCore::QEntity(this->rootEntity);
planeEntity->addComponent(mPlane);
planeEntity->addComponent(planeMaterial);
planeEntity->addComponent(planeTransform);

planeEntity->setEnabled(true);

In my scenemodifier. So it adds plane to the scene with material using texture. mPlane has width and height: 4.0 and 3.0. The image for texture has resolution 640x480, so it's 4:3 too.

void PaintedTextureImage::paint(QPainter *painter)
{
    ...
    current = QImage((uchar*)color.data, color.cols, color.rows, color.step, QImage::Format_RGB888);
    painter->drawImage(0, 0, current);

}

This is how 'current' looks if I save it to file: enter image description here

And this is how it looks painted as textue: enter image description here

So image quality became VERY bad and I can't understand why.

Tobbor
  • 110
  • 7

1 Answers1

1

Solution:

planeTextureImage->setWidth(640);
planeTextureImage->setHeight(480);

Default was 256x256.

Tobbor
  • 110
  • 7