如何将 QPaintedTextureImage 加载到 QTextureMaterial 中?
How can I load a QPaintedTextureImage into a QTextureMaterial?
我正在使用 Qt3D 创建一个 360 度全景查看器,其中等距柱状格式的图像加载在具有负半径的球体的网格上。问题是我需要从内存而不是文件加载纹理。
为了实现这一点,我开发了一个自定义的 QPaintedTextureImage,其中重载了 paint() 以从 QImage 中绘制。它有效,但仅当插入 QDiffuseMapMaterial 时。因为我不想要任何光效(只是像素的原始颜色),所以 QTextureMaterial 似乎是正确的选择,但我不知道该怎么做。
有什么想法吗?
知道了!
class MyQPaintedTextureImage : public Qt3DRender::QPaintedTextureImage
{
private:
QImage image;
public:
void setImage(QImage &i){
image = i;
setSize(i.size());
}
virtual void paint(QPainter *painter) override{
painter->drawImage(0, 0, image);
}
};
然后:
auto *image = new MyQPaintedTextureImage;
image->setImage(i);
auto *planeMaterial = new Qt3DExtras::QTextureMaterial;
planeMaterial->texture()->addTextureImage(image);
m_sphereEntity->addComponent(planeMaterial);
我正在使用 Qt3D 创建一个 360 度全景查看器,其中等距柱状格式的图像加载在具有负半径的球体的网格上。问题是我需要从内存而不是文件加载纹理。
为了实现这一点,我开发了一个自定义的 QPaintedTextureImage,其中重载了 paint() 以从 QImage 中绘制。它有效,但仅当插入 QDiffuseMapMaterial 时。因为我不想要任何光效(只是像素的原始颜色),所以 QTextureMaterial 似乎是正确的选择,但我不知道该怎么做。
有什么想法吗?
知道了!
class MyQPaintedTextureImage : public Qt3DRender::QPaintedTextureImage
{
private:
QImage image;
public:
void setImage(QImage &i){
image = i;
setSize(i.size());
}
virtual void paint(QPainter *painter) override{
painter->drawImage(0, 0, image);
}
};
然后:
auto *image = new MyQPaintedTextureImage;
image->setImage(i);
auto *planeMaterial = new Qt3DExtras::QTextureMaterial;
planeMaterial->texture()->addTextureImage(image);
m_sphereEntity->addComponent(planeMaterial);