# HG changeset patch # User Teemu Piippo # Date 1656428374 -10800 # Node ID 42b4953dff8582a9b434e366e39402efd076fd41 # Parent 0fd926ebb03b3266f2d445108974f7c518242ba3 Let's bring GLEW back after all diff -r 0fd926ebb03b -r 42b4953dff85 CMakeLists.txt --- a/CMakeLists.txt Tue Jun 28 17:35:56 2022 +0300 +++ b/CMakeLists.txt Tue Jun 28 17:59:34 2022 +0300 @@ -18,6 +18,7 @@ add_library(QtUiPlugin ALIAS Qt5::UiPlugin) endif() find_package(OpenGL REQUIRED) +find_package(GLEW REQUIRED) find_package(GLM REQUIRED) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) @@ -78,7 +79,6 @@ src/vertexmap.cpp src/gl/basicshaderprogram.cpp src/gl/compiler.cpp - src/gl/debug.cpp src/gl/partrenderer.cpp # src/gl/vertexprogram.cpp src/layers/axeslayer.cpp @@ -117,7 +117,6 @@ src/gl/basicshaderprogram.h src/gl/common.h src/gl/compiler.h - src/gl/debug.h src/gl/partrenderer.h # src/gl/vertexprogram.h src/layers/axeslayer.h @@ -142,6 +141,9 @@ src/widgets/colorselectdialog.ui src/widgets/colorindexinput.ui ) +set(SHADER_FILES + shaders/model.vert.glsl +) set(LOCALE_FILES locale/fi.ts @@ -169,11 +171,13 @@ ${QRC_SOURCE} ${FORMS_HEADERS} ${OTHER_FILES} + ${SHADER_FILES} ) set_source_files_properties(${HEADER_FILES} PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties(${QRC_FILE} PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties(${OTHER_FILES} PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties(${SHADER_FILES} PROPERTIES HEADER_FILE_ONLY TRUE) set_target_properties(${TARGET_NAME} PROPERTIES AUTOMOC 1) target_link_libraries(${TARGET_NAME} PRIVATE Qt::Core) target_link_libraries(${TARGET_NAME} PRIVATE Qt::Widgets) diff -r 0fd926ebb03b -r 42b4953dff85 src/gl/common.h --- a/src/gl/common.h Tue Jun 28 17:35:56 2022 +0300 +++ b/src/gl/common.h Tue Jun 28 17:59:34 2022 +0300 @@ -17,13 +17,13 @@ */ #pragma once +#include #include #include #include #include #include #include -#include #include #include "src/basics.h" #include "src/colors.h" @@ -47,8 +47,6 @@ } }; -QOpenGLFunctions& glfunc(); - namespace gl { class ShaderProgram; diff -r 0fd926ebb03b -r 42b4953dff85 src/gl/compiler.cpp --- a/src/gl/compiler.cpp Tue Jun 28 17:35:56 2022 +0300 +++ b/src/gl/compiler.cpp Tue Jun 28 17:59:34 2022 +0300 @@ -344,7 +344,7 @@ } const GLsizeiptr size = static_cast(vector.size() * sizeof vector[0]); object.buffer.bind(); - glfunc().glBufferSubData(GL_ARRAY_BUFFER, 0, size, vector.data()); + glBufferSubData(GL_ARRAY_BUFFER, 0, size, vector.data()); object.buffer.release(); } } diff -r 0fd926ebb03b -r 42b4953dff85 src/gl/compiler.h --- a/src/gl/compiler.h Tue Jun 28 17:35:56 2022 +0300 +++ b/src/gl/compiler.h Tue Jun 28 17:59:34 2022 +0300 @@ -17,6 +17,7 @@ */ #pragma once +#include #include #include #include @@ -89,7 +90,7 @@ for (gl::ModelShaders::ShaderObject& shader : shaders->shaderObjects) { shader.program->bind(); - const int location = glfunc().glGetUniformLocation(shader.program->programId(), uniformName); + const int location = glGetUniformLocation(shader.program->programId(), uniformName); if (location != -1) { shader.program->setUniformValue(location, std::forward(args)...); } diff -r 0fd926ebb03b -r 42b4953dff85 src/gl/debug.cpp --- a/src/gl/debug.cpp Tue Jun 28 17:35:56 2022 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,100 +0,0 @@ -#include "src/gl/debug.h" - -QString sourceToString(const QOpenGLDebugMessage::Source source) -{ - switch (source) { - case QOpenGLDebugMessage::InvalidSource: - return QObject::tr("invalid"); - case QOpenGLDebugMessage::APISource: - return QObject::tr("API"); - case QOpenGLDebugMessage::WindowSystemSource: - return QObject::tr("window system"); - case QOpenGLDebugMessage::ShaderCompilerSource: - return QObject::tr("shader compiler"); - case QOpenGLDebugMessage::ThirdPartySource: - return QObject::tr("third party"); - case QOpenGLDebugMessage::ApplicationSource: - return QObject::tr("application"); - case QOpenGLDebugMessage::OtherSource: - return QObject::tr("other"); - case QOpenGLDebugMessage::AnySource: - return QObject::tr("any"); - } - return ""; -} - -QString typeToString(const QOpenGLDebugMessage::Type type) -{ - switch (type) { - case QOpenGLDebugMessage::ErrorType: - return QObject::tr("error"); - case QOpenGLDebugMessage::DeprecatedBehaviorType: - return QObject::tr("deprecated behavior"); - case QOpenGLDebugMessage::UndefinedBehaviorType: - return QObject::tr("undefined behavior"); - case QOpenGLDebugMessage::PortabilityType: - return QObject::tr("portability"); - case QOpenGLDebugMessage::PerformanceType: - return QObject::tr("performance"); - case QOpenGLDebugMessage::MarkerType: - return QObject::tr("marker"); - case QOpenGLDebugMessage::GroupPushType: - return QObject::tr("push group"); - case QOpenGLDebugMessage::GroupPopType: - return QObject::tr("pop group"); - case QOpenGLDebugMessage::OtherType: - return QObject::tr("other"); - case QOpenGLDebugMessage::InvalidType: - return QObject::tr("invalid"); - case QOpenGLDebugMessage::AnyType: - return QObject::tr("any"); - } - return ""; -} - -QString severityToString(const QOpenGLDebugMessage::Severity severity) -{ - switch (severity) { - case QOpenGLDebugMessage::HighSeverity: - return QObject::tr("high"); - case QOpenGLDebugMessage::MediumSeverity: - return QObject::tr("medium"); - case QOpenGLDebugMessage::LowSeverity: - return QObject::tr("low"); - case QOpenGLDebugMessage::NotificationSeverity: - return QObject::tr("notification"); - case QOpenGLDebugMessage::InvalidSeverity: - return QObject::tr("invalid"); - case QOpenGLDebugMessage::AnySeverity: - return QObject::tr("any"); - } - return ""; -} - -constexpr Message::Type severityToMessageType(const QOpenGLDebugMessage::Severity severity) -{ - switch (severity) { - case QOpenGLDebugMessage::HighSeverity: - return Message::Error; - case QOpenGLDebugMessage::MediumSeverity: - return Message::Warning; - default: - return Message::Info; - } -} - -Message debugMessageToString(const QOpenGLDebugMessage& glmessage) -{ - QString text; - QTextStream stream{&text}; - stream << QObject::tr("OpenGL debug message [%1]").arg(glmessage.id()) << "\n"; - stream << QObject::tr("Source: %1, ").arg(sourceToString(glmessage.source())); - stream << QObject::tr("type: %1, ").arg(typeToString(glmessage.type())); - stream << QObject::tr("severity: %1\n").arg(severityToString(glmessage.severity())); - stream << glmessage.message(); - return Message{ - .time = QDateTime::currentDateTime(), - .type = severityToMessageType(glmessage.severity()), - .text = text, - }; -} diff -r 0fd926ebb03b -r 42b4953dff85 src/gl/debug.h --- a/src/gl/debug.h Tue Jun 28 17:35:56 2022 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -#pragma once -#include -#include "src/basics.h" - -Message debugMessageToString(const QOpenGLDebugMessage& glmessage); diff -r 0fd926ebb03b -r 42b4953dff85 src/gl/partrenderer.cpp --- a/src/gl/partrenderer.cpp Tue Jun 28 17:35:56 2022 +0300 +++ b/src/gl/partrenderer.cpp Tue Jun 28 17:59:34 2022 +0300 @@ -16,6 +16,7 @@ * along with this program. If not, see . */ +#include #include #include #include @@ -29,17 +30,10 @@ #include "src/settings.h" #include "src/gl/partrenderer.h" #include "src/gl/compiler.h" -#include "src/gl/debug.h" static constexpr double MIN_ZOOM = -3.0; static constexpr double MAX_ZOOM = 3.0; -QOpenGLFunctions& glfunc() -{ - static QOpenGLFunctions funcs; - return funcs; -} - PartRenderer::PartRenderer( Model* model, DocumentManager* documents, @@ -56,9 +50,6 @@ QSurfaceFormat surfaceFormat; surfaceFormat.setSamples(8); this->setFormat(surfaceFormat); - connect(&this->logger, &QOpenGLDebugLogger::messageLogged, [&](const QOpenGLDebugMessage& glmessage){ - Q_EMIT this->message(debugMessageToString(glmessage)); - }); connect(model, &Model::rowsInserted, [&]{ this->needBuild = true; }); @@ -81,18 +72,9 @@ { } -static QVector3D calcQVector3DFromQColor(const QColor& color) -{ - return { - float_cast(color.redF()), - float_cast(color.greenF()), - float_cast(color.blueF()), - }; -} - void PartRenderer::initializeGL() { - glfunc().initializeOpenGLFunctions(); + glewInit(); gl::initializeModelShaders(&this->shaders); for (RenderLayer* layer : this->activeRenderLayers) { layer->initializeGL(); @@ -100,10 +82,6 @@ for (RenderLayer* layer : this->inactiveRenderLayers) { layer->initializeGL(); } - this->logger.initialize(); - if (setting()) { - this->logger.startLogging(); - } connect(this->model, &Model::dataChanged, this, &PartRenderer::build); this->initialized = true; this->modelQuaternion = glm::angleAxis(glm::radians(30.0f), glm::vec3{-1, 0, 0}); @@ -499,15 +477,6 @@ { this->build(); } - if (this->initialized) { - this->makeCurrent(); - if (setting()) { - this->logger.startLogging(); - } - else { - this->logger.stopLogging(); - } - } Q_EMIT this->renderPreferencesChanged(); this->update(); } diff -r 0fd926ebb03b -r 42b4953dff85 src/gl/partrenderer.h --- a/src/gl/partrenderer.h Tue Jun 28 17:35:56 2022 +0300 +++ b/src/gl/partrenderer.h Tue Jun 28 17:59:34 2022 +0300 @@ -1,11 +1,10 @@ #pragma once -#include -#include #include "src/basics.h" #include "src/documentmanager.h" #include "src/types/boundingbox.h" #include "src/gl/common.h" #include "src/gl/compiler.h" +#include class PartRenderer final : public QOpenGLWidget { @@ -30,7 +29,6 @@ std::vector activeRenderLayers; std::vector inactiveRenderLayers; bool frozen = false; - QOpenGLDebugLogger logger; public: PartRenderer( Model* model,