Я использую Qt3D в своем проекте, мне нужно динамически изменять текстуру плоскости. Для этого я использую свою реализацию QAbstractTextureImage. Я делаю:
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);
В моем модификаторе сцены. Таким образом, это добавляет плоскость к сцене с материалом, используя текстуру. mPlane имеет ширину и высоту: 4,0 и 3,0. Изображение для текстуры имеет разрешение 640x480, поэтому оно также равно 4: 3.
void PaintedTextureImage::paint(QPainter *painter)
{
...
current = QImage((uchar*)color.data, color.cols, color.rows, color.step, QImage::Format_RGB888);
painter->drawImage(0, 0, current);
}
Так выглядит «текущий», если я сохраню его в файл: ![enter image description here](https://i.stack.imgur.com/qB3vr.png)
А вот так это выглядит нарисованным как текст: ![enter image description here](https://i.stack.imgur.com/0QTGP.png)
Так что качество изображения стало ОЧЕНЬ плохим, и я не могу понять, почему.