diff -r 918b6c0f8b5b -r ed9685f44ab3 src/gl/compiler.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/gl/compiler.h Sat Dec 14 22:36:06 2019 +0200
@@ -0,0 +1,62 @@
+/*
+ * LDForge: LDraw parts authoring CAD
+ * Copyright (C) 2013 - 2018 Teemu Piippo
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+#include "main.h"
+#include "gl/partrenderer.h"
+#include "gl/common.h"
+#include "types/boundingbox.h"
+#include
+#include
+
+namespace gl
+{
+ class Compiler;
+ class Renderer;
+}
+
+/*
+ * Compiles LDObjects into polygons for the GLRenderer to draw.
+ */
+class gl::Compiler : public QObject, protected QOpenGLFunctions
+{
+ Q_OBJECT
+public:
+ Compiler(Renderer* renderer);
+ ~Compiler();
+ void initialize();
+ Point3D modelCenter();
+ void prepareVBO (int vbonum);
+ GLuint vbo (int vbonum) const;
+ int vboSize (int vbonum) const;
+ static int vboNumber (VboClass surface, VboSubclass complement);
+private:
+ struct ObjectVboData
+ {
+ QVector data[gl::numVbos];
+ };
+ QMap m_objectInfo;
+ QSet m_staged; // Objects that need to be compiled
+ GLuint m_vbo[gl::numVbos];
+ bool m_vboChanged[gl::numVbos] = {true};
+ bool needBoundingBoxRebuild = true;
+ int m_vboSizes[gl::numVbos] = {0};
+};
+
+#define CHECK_GL_ERROR() { checkGLError(__FILE__, __LINE__); }
+void checkGLError (QString file, int line);