浏览代码

Allow software rasterization

Change-Id: I4196a769b6ac604d90dabaa826a64f17fbb5c36c
Donald Carr 8 年之前
父节点
当前提交
e1196d5330
共有 1 个文件被更改,包括 22 次插入17 次删除
  1. 22 17
      src/main.cpp

+ 22 - 17
src/main.cpp

@@ -24,6 +24,7 @@
 #include <QSettings>
 #include <QSurfaceFormat>
 #include <QTimer>
+#include <QQuickWindow>
 
 #include <QDir>
 #include <QFile>
@@ -59,25 +60,29 @@ int main(int argc, char *argv[])
 
     QSettings settings;
 
-    if (settings.value("force32bpp", true).toBool()) {
-        QSurfaceFormat format = QSurfaceFormat::defaultFormat();
-        format.setAlphaBufferSize(8);
-        format.setRedBufferSize(8);
-        format.setGreenBufferSize(8);
-        format.setBlueBufferSize(8);
-        QSurfaceFormat::setDefaultFormat(format);
-    }
+    if (settings.value("raster", false).toBool()) {
+        QQuickWindow::setSceneGraphBackend(QSGRendererInterface::Software);
+    } else {
+        if (settings.value("force32bpp", true).toBool()) {
+            QSurfaceFormat format = QSurfaceFormat::defaultFormat();
+            format.setAlphaBufferSize(8);
+            format.setRedBufferSize(8);
+            format.setGreenBufferSize(8);
+            format.setBlueBufferSize(8);
+            QSurfaceFormat::setDefaultFormat(format);
+        }
 
-    if (settings.value("forceSingleBuffer", false).toBool()) {
-        QSurfaceFormat format = QSurfaceFormat::defaultFormat();
-        format.setSwapBehavior(QSurfaceFormat::SingleBuffer);
-        QSurfaceFormat::setDefaultFormat(format);
-    }
+        if (settings.value("forceSingleBuffer", false).toBool()) {
+            QSurfaceFormat format = QSurfaceFormat::defaultFormat();
+            format.setSwapBehavior(QSurfaceFormat::SingleBuffer);
+            QSurfaceFormat::setDefaultFormat(format);
+        }
 
-    if (settings.value("forceTripleBuffer", false).toBool()) {
-        QSurfaceFormat format = QSurfaceFormat::defaultFormat();
-        format.setSwapBehavior(QSurfaceFormat::TripleBuffer);
-        QSurfaceFormat::setDefaultFormat(format);
+        if (settings.value("forceTripleBuffer", false).toBool()) {
+            QSurfaceFormat format = QSurfaceFormat::defaultFormat();
+            format.setSwapBehavior(QSurfaceFormat::TripleBuffer);
+            QSurfaceFormat::setDefaultFormat(format);
+        }
     }
 
     QQmlApplicationEngine engine;