【发布时间】:2019-10-25 09:52:47
【问题描述】:
我在我的项目中使用 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);
}
所以图像质量变得非常糟糕,我不明白为什么。
【问题讨论】: