【问题标题】:Qt3D QAbstractTextureImage pixelatedQt3D QAbstractTextureImage 像素化
【发布时间】: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);

}

如果我将“当前”保存到文件中,这就是它的外观:

这就是它被绘制成纹理的样子:

所以图像质量变得非常糟糕,我不明白为什么。

【问题讨论】:

    标签: c++ qt qt3d qtwidgets


    【解决方案1】:

    解决方案:

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

    默认为 256x256。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-05
      • 1970-01-01
      • 1970-01-01
      • 2012-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多