From 131827a82b7a04e4e77354d9cc2ea36fe49acb96 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Thu, 28 May 2015 14:27:49 -0700 Subject: [PATCH 1/4] libraries/entities doesn't need polyvox, only libraries/entities-renderer --- libraries/entities-renderer/CMakeLists.txt | 6 +++++- libraries/entities/CMakeLists.txt | 6 +----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/libraries/entities-renderer/CMakeLists.txt b/libraries/entities-renderer/CMakeLists.txt index 6c7fa04a21..029d742b09 100644 --- a/libraries/entities-renderer/CMakeLists.txt +++ b/libraries/entities-renderer/CMakeLists.txt @@ -3,7 +3,7 @@ set(TARGET_NAME entities-renderer) # use setup_hifi_library macro to setup our project and link appropriate Qt modules setup_hifi_library(Widgets OpenGL Network Script) -add_dependency_external_projects(glm) +add_dependency_external_projects(glm polyvox) find_package(GLM REQUIRED) target_include_directories(${TARGET_NAME} PUBLIC ${GLM_INCLUDE_DIRS}) @@ -12,4 +12,8 @@ find_package(Bullet REQUIRED) target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${BULLET_INCLUDE_DIRS}) target_link_libraries(${TARGET_NAME} ${BULLET_LIBRARIES}) +find_package(PolyVox REQUIRED) +target_include_directories(${TARGET_NAME} SYSTEM PUBLIC ${POLYVOX_INCLUDE_DIRS}) +target_link_libraries(${TARGET_NAME} ${POLYVOX_LIBRARIES}) + link_hifi_libraries(shared gpu script-engine render-utils) diff --git a/libraries/entities/CMakeLists.txt b/libraries/entities/CMakeLists.txt index c4334edb3a..d21906fa3f 100644 --- a/libraries/entities/CMakeLists.txt +++ b/libraries/entities/CMakeLists.txt @@ -7,14 +7,10 @@ add_dependency_external_projects(glm) find_package(GLM REQUIRED) target_include_directories(${TARGET_NAME} PUBLIC ${GLM_INCLUDE_DIRS}) -add_dependency_external_projects(bullet polyvox) +add_dependency_external_projects(bullet) find_package(Bullet REQUIRED) target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${BULLET_INCLUDE_DIRS}) target_link_libraries(${TARGET_NAME} ${BULLET_LIBRARIES}) -find_package(PolyVox REQUIRED) -target_include_directories(${TARGET_NAME} SYSTEM PUBLIC ${POLYVOX_INCLUDE_DIRS}) -target_link_libraries(${TARGET_NAME} ${POLYVOX_LIBRARIES}) - link_hifi_libraries(avatars shared octree gpu model fbx networking animation environment) From 94edb72b47a497aad1f73b0b04d574c3a2bcab07 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Thu, 28 May 2015 14:30:06 -0700 Subject: [PATCH 2/4] oops --- libraries/entities-renderer/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/entities-renderer/CMakeLists.txt b/libraries/entities-renderer/CMakeLists.txt index 029d742b09..a94bfb5f97 100644 --- a/libraries/entities-renderer/CMakeLists.txt +++ b/libraries/entities-renderer/CMakeLists.txt @@ -3,7 +3,7 @@ set(TARGET_NAME entities-renderer) # use setup_hifi_library macro to setup our project and link appropriate Qt modules setup_hifi_library(Widgets OpenGL Network Script) -add_dependency_external_projects(glm polyvox) +add_dependency_external_projects(glm) find_package(GLM REQUIRED) target_include_directories(${TARGET_NAME} PUBLIC ${GLM_INCLUDE_DIRS}) @@ -12,6 +12,7 @@ find_package(Bullet REQUIRED) target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${BULLET_INCLUDE_DIRS}) target_link_libraries(${TARGET_NAME} ${BULLET_LIBRARIES}) +add_dependency_external_projects(polyvox) find_package(PolyVox REQUIRED) target_include_directories(${TARGET_NAME} SYSTEM PUBLIC ${POLYVOX_INCLUDE_DIRS}) target_link_libraries(${TARGET_NAME} ${POLYVOX_LIBRARIES}) From f98305dd555f351db3deb35a9d4752a12e8616d5 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Fri, 29 May 2015 12:45:03 -0700 Subject: [PATCH 3/4] CR comments --- libraries/octree/src/ViewFrustum.h | 4 ++-- libraries/render-utils/src/GlWindow.cpp | 18 +++--------------- libraries/render-utils/src/GlWindow.h | 11 +++++------ libraries/render-utils/src/OffscreenGlCanvas.h | 2 +- 4 files changed, 11 insertions(+), 24 deletions(-) diff --git a/libraries/octree/src/ViewFrustum.h b/libraries/octree/src/ViewFrustum.h index 43bc1d992e..cd1e010818 100644 --- a/libraries/octree/src/ViewFrustum.h +++ b/libraries/octree/src/ViewFrustum.h @@ -52,8 +52,8 @@ public: void getFocalLength(float focalLength) { _focalLength = focalLength; } // getters for lens attributes - const glm::mat4& getProjection() const { return _projection; }; - const glm::mat4& getView() const { return _view; }; + const glm::mat4& getProjection() const { return _projection; } + const glm::mat4& getView() const { return _view; } float getWidth() const { return _width; } float getHeight() const { return _height; } float getFieldOfView() const { return _fieldOfView; } diff --git a/libraries/render-utils/src/GlWindow.cpp b/libraries/render-utils/src/GlWindow.cpp index b395140518..ec294dca5e 100644 --- a/libraries/render-utils/src/GlWindow.cpp +++ b/libraries/render-utils/src/GlWindow.cpp @@ -10,24 +10,12 @@ #include #include +#include -static QSurfaceFormat getDefaultFormat() { - QSurfaceFormat format; - // Qt Quick may need a depth and stencil buffer. Always make sure these are available. - format.setDepthBufferSize(16); - format.setStencilBufferSize(8); - format.setVersion(4, 1); -#ifdef DEBUG - format.setOption(QSurfaceFormat::DebugContext); -#endif - format.setProfile(QSurfaceFormat::OpenGLContextProfile::CompatibilityProfile); - return format; +GlWindow::GlWindow(QOpenGLContext* shareContext) : GlWindow(getDefaultOpenGlSurfaceFormat(), shareContext) { } -GlWindow::GlWindow(QOpenGLContext * shareContext) : GlWindow(getDefaultFormat(), shareContext) { -} - -GlWindow::GlWindow(const QSurfaceFormat& format, QOpenGLContext * shareContext) { +GlWindow::GlWindow(const QSurfaceFormat& format, QOpenGLContext* shareContext) { setSurfaceType(QSurface::OpenGLSurface); setFormat(format); _context = new QOpenGLContext; diff --git a/libraries/render-utils/src/GlWindow.h b/libraries/render-utils/src/GlWindow.h index 69fb09932e..57108c6e37 100644 --- a/libraries/render-utils/src/GlWindow.h +++ b/libraries/render-utils/src/GlWindow.h @@ -11,24 +11,23 @@ #define hifi_GlWindow_h #include -#include class QOpenGLContext; class QOpenGLDebugLogger; class GlWindow : public QWindow { public: - GlWindow(QOpenGLContext * shareContext = nullptr); - GlWindow(const QSurfaceFormat& format, QOpenGLContext * shareContext = nullptr); + GlWindow(QOpenGLContext* shareContext = nullptr); + GlWindow(const QSurfaceFormat& format, QOpenGLContext* shareContext = nullptr); virtual ~GlWindow(); void makeCurrent(); void doneCurrent(); void swapBuffers(); private: - QOpenGLContext * _context{ nullptr }; + QOpenGLContext* _context{ nullptr }; #ifdef DEBUG - QOpenGLDebugLogger * _logger{ nullptr }; + QOpenGLDebugLogger* _logger{ nullptr }; #endif }; -#endif \ No newline at end of file +#endif diff --git a/libraries/render-utils/src/OffscreenGlCanvas.h b/libraries/render-utils/src/OffscreenGlCanvas.h index c9578f5a7c..399737ddb8 100644 --- a/libraries/render-utils/src/OffscreenGlCanvas.h +++ b/libraries/render-utils/src/OffscreenGlCanvas.h @@ -31,7 +31,7 @@ protected: QOpenGLContext _context; QOffscreenSurface _offscreenSurface; #ifdef DEBUG - QOpenGLDebugLogger * _logger{ nullptr }; + QOpenGLDebugLogger* _logger{ nullptr }; #endif }; From 77b45e2b4adbba05f32e5d77092545cd6f033ad0 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Fri, 29 May 2015 12:59:55 -0700 Subject: [PATCH 4/4] Adding missing files --- libraries/shared/src/GLHelpers.cpp | 16 ++++++++++++++++ libraries/shared/src/GLHelpers.h | 23 +++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 libraries/shared/src/GLHelpers.cpp create mode 100644 libraries/shared/src/GLHelpers.h diff --git a/libraries/shared/src/GLHelpers.cpp b/libraries/shared/src/GLHelpers.cpp new file mode 100644 index 0000000000..f2371e49bb --- /dev/null +++ b/libraries/shared/src/GLHelpers.cpp @@ -0,0 +1,16 @@ +#include "GLHelpers.h" + + +QSurfaceFormat getDefaultOpenGlSurfaceFormat() { + QSurfaceFormat format; + // Qt Quick may need a depth and stencil buffer. Always make sure these are available. + format.setDepthBufferSize(DEFAULT_GL_DEPTH_BUFFER_BITS); + format.setStencilBufferSize(DEFAULT_GL_STENCIL_BUFFER_BITS); + format.setVersion(4, 1); +#ifdef DEBUG + format.setOption(QSurfaceFormat::DebugContext); +#endif + // FIXME move to core as soon as possible + format.setProfile(QSurfaceFormat::OpenGLContextProfile::CompatibilityProfile); + return format; +} diff --git a/libraries/shared/src/GLHelpers.h b/libraries/shared/src/GLHelpers.h new file mode 100644 index 0000000000..dc9f0f3140 --- /dev/null +++ b/libraries/shared/src/GLHelpers.h @@ -0,0 +1,23 @@ +// +// Created by Bradley Austin Davis 2015/05/29 +// Copyright 2014 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#pragma once +#ifndef hifi_GLHelpers_h +#define hifi_GLHelpers_h + +#include + +// 16 bits of depth precision +#define DEFAULT_GL_DEPTH_BUFFER_BITS 16 +// 8 bits of stencil buffer (typically you really only need 1 bit for functionality +// but GL implementations usually just come with buffer sizes in multiples of 8) +#define DEFAULT_GL_STENCIL_BUFFER_BITS 8 + +QSurfaceFormat getDefaultOpenGlSurfaceFormat(); + +#endif