Qt3D QAbstractTextureImage pixelated - PullRequest
       22

Qt3D QAbstractTextureImage pixelated

1 голос
/ 25 октября 2019

Я использую 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

А вот так это выглядит нарисованным как текст: enter image description here

Так что качество изображения стало ОЧЕНЬ плохим, и я не могу понять, почему.

1 Ответ

1 голос
/ 25 октября 2019

Решение:

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

По умолчанию 256x256.

...