如何从qt3d演示向"basicshapes"示例添加纹理

How to add texture to the "basicshapes" exampler from qt3d demo

本文关键字:basicshapes 添加 纹理 qt3d      更新时间:2023-10-16

我是Qt的新手。我试图添加纹理的例子项目"basicshapes",它来自Qt Creator演示。它是用c++写的,这很完美,因为这是我需要的。常用的类有:

Qt3D::QTransform
Qt3D::QSphereMesh
Qt3D::QPhongMaterial

等但我不知道如何给它添加纹理。有一个片段:

Qt3D::QPhongMaterial *sphereMaterial = new Qt3D::QPhongMaterial();
sphereMaterial->setDiffuse(QColor(QRgb(0xa69929)));

所以我试着添加:

MyTextureImage *t = new MyTextureImage();
MyTextureProvider *x = new MyTextureProvider();
x->addTextureImage(t);
sphereMaterial->setTextureParameter("SphereTexture", x);

之前我已经从抽象类派生了:

class MyTextureProvider : public Qt3D::QAbstractTextureProvider { };
class MyTextureImage : public Qt3D::QAbstractTextureImage { };

but I got error:

error: C2259: 'MyTextureImage' : cannot instantiate abstract class
due to following members:
'Qt3D::QNode *Qt3D::QNode::doClone(void) const' : is abstract

我不是Qt专家,但是通过查看编译器错误,您需要覆盖doClone方法,因为它是纯虚拟的。

有关编译器错误的更多信息,请访问MSDN: https://msdn.microsoft.com/en-us/library/zxt206sk.aspx