gpt4 book ai didi

c++ - Qt3D QAbstractTextureImage 像素化

转载 作者:行者123 更新时间:2023-11-30 04:42:53 27 4
gpt4 key购买 nike

我在我的项目中使用 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

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

最佳答案

解决方法:

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

默认为 256x256。

关于c++ - Qt3D QAbstractTextureImage 像素化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58556184/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com