#include #include #include #include #include #include "CloudViewMainWindow.h" #define APP_VERSION "1.2.0" int main(int argc, char* argv[]) { QApplication app(argc, argv); // 设置 OpenGL 格式 - 使用 2.1 版本以确保固定管线兼容 QSurfaceFormat format; format.setDepthBufferSize(24); format.setStencilBufferSize(8); format.setVersion(2, 1); // 使用 OpenGL 2.1 以确保固定管线函数可用 format.setSamples(4); // 抗锯齿 QSurfaceFormat::setDefaultFormat(format); // 设置应用信息 app.setApplicationName("CloudView"); app.setOrganizationName("CloudView"); app.setApplicationVersion(APP_VERSION); QCommandLineParser parser; parser.setApplicationDescription("CloudView point cloud and shape viewer"); parser.addHelpOption(); parser.addVersionOption(); QCommandLineOption cloudOption( QStringList() << "cloud" << "point-cloud", "Load a point cloud or segment file. Positional files are treated the same way.", "file"); QCommandLineOption bboxOption( QStringList() << "bbox", "Load a bounding-box JSON file.", "file"); QCommandLineOption circleOption( QStringList() << "circle", "Load a circle data file. Row format: {x,y,z}-{r,p,y}-{radius}.", "file"); QCommandLineOption rectangleOption( QStringList() << "rectangle", "Load a rectangle data file. Row format: {x,y,z}-{r,p,y}-{width,height}.", "file"); QCommandLineOption surfaceOption( QStringList() << "surface", "Load a surface data file. Row format: {x,y,z}-{length,width} or {x,y,z}-{r,p,y}-{length,width}.", "file"); QCommandLineOption triangleOption( QStringList() << "triangle", "Load a triangle data file. Row format: {x,y,z}-{x,y,z}-{x,y,z}.", "file"); QCommandLineOption sequenceOption( QStringList() << "sequence" << "sequential", "Display startup files one at a time. Closing the window loads the next file."); parser.addOption(cloudOption); parser.addOption(bboxOption); parser.addOption(circleOption); parser.addOption(rectangleOption); parser.addOption(surfaceOption); parser.addOption(triangleOption); parser.addOption(sequenceOption); parser.addPositionalArgument("files", "Point cloud or segment files to load."); parser.process(app); CloudViewMainWindow::StartupFiles startupFiles; startupFiles.displayFiles = parser.values(cloudOption); startupFiles.displayFiles.append(parser.positionalArguments()); startupFiles.bboxFiles = parser.values(bboxOption); startupFiles.circleFiles = parser.values(circleOption); startupFiles.rectangleFiles = parser.values(rectangleOption); startupFiles.surfaceFiles = parser.values(surfaceOption); startupFiles.triangleFiles = parser.values(triangleOption); startupFiles.sequential = parser.isSet(sequenceOption); // 设置应用程序图标 app.setWindowIcon(QIcon(":/logo.png")); // 创建并显示主窗口 CloudViewMainWindow mainWindow; mainWindow.setWindowTitle(QString("点云查看器 v%1").arg(APP_VERSION)); mainWindow.resize(1280, 720); mainWindow.show(); QTimer::singleShot(0, &mainWindow, [&mainWindow, startupFiles]() { mainWindow.loadStartupFiles(startupFiles); }); return app.exec(); }