Qt6.9中使用Qt3D模块进行绘制的demo:
#include <QApplication>
#include <Qt3DCore/QEntity>
#include <Qt3DExtras/Qt3DWindow>
#include <Qt3DExtras/QSphereMesh>
#include <Qt3DExtras/QPhongMaterial>
#include <Qt3DRender/QCamera>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
// 创建 3D 窗口
Qt3DExtras::Qt3DWindow view;
// 根实体
Qt3DCore::QEntity *rootEntity = new Qt3DCore::QEntity();
// 球体实体
Qt3DCore::QEntity *sphereEntity = new Qt3DCore::QEntity(rootEntity);
// 球体网格(半径 = 1.0,分段 = 20)
Qt3DExtras::QSphereMesh *sphereMesh = new Qt3DExtras::QSphereMesh();
sphereMesh->setRadius(1.0f);
sphereMesh->setRings(20);
sphereMesh->setSlices(20);
sphereEntity->addComponent(sphereMesh);
// 材质(红色漫反射)
Qt3DExtras::QPhongMaterial *material = new Qt3DExtras::QPhongMaterial();
material->setDiffuse(QColor(255, 0, 0)); // 红色
sphereEntity->addComponent(material);
// 相机配置
Qt3DRender::QCamera *camera = view.camera();
camera->lens()->setPerspectiveProjection(45.0f, 16.0f/9.0f, 0.1f, 1000.0f);
camera->setPosition(QVector3D(0, 0, 5)); // 摄像机位置
camera->setViewCenter(QVector3D(0, 0, 0)); // 看向原点
// 设置根实体并显示窗口
view.setRootEntity(rootEntity);
view.show();
return app.exec();
}