From 80fe89dbc8ccdff63f4a9de9d63488727e358015 Mon Sep 17 00:00:00 2001 From: Emil Axelsson Date: Wed, 23 Mar 2016 14:00:40 +0100 Subject: [PATCH] change interfaces from pointer to reference --- include/openspace/rendering/abufferrenderer.h | 2 +- .../openspace/rendering/framebufferrenderer.h | 2 +- .../openspace/rendering/raycasterlistener.h | 2 +- .../openspace/rendering/raycastermanager.h | 10 +++---- include/openspace/rendering/renderable.h | 2 +- include/openspace/rendering/volumeraycaster.h | 8 +++--- .../renderableconstellationbounds.cpp | 2 +- modules/base/rendering/renderablemodel.cpp | 2 +- modules/base/rendering/renderablepath.cpp | 2 +- modules/base/rendering/renderableplane.cpp | 2 +- modules/base/rendering/renderableplanet.cpp | 2 +- modules/base/rendering/renderablesphere.cpp | 2 +- .../rendering/renderablesphericalgrid.cpp | 2 +- modules/base/rendering/renderablestars.cpp | 2 +- modules/base/rendering/renderabletrail.cpp | 2 +- .../rendering/renderablecrawlingline.cpp | 2 +- .../newhorizons/rendering/renderablefov.cpp | 2 +- .../rendering/renderablemodelprojection.cpp | 2 +- .../rendering/renderableplaneprojection.cpp | 2 +- .../rendering/renderableplanetprojection.cpp | 2 +- .../rendering/renderableshadowcylinder.cpp | 2 +- .../rendering/renderabletoyvolume.cpp | 8 +++--- .../rendering/toyvolumeraycaster.cpp | 26 +++++++++---------- .../toyvolume/rendering/toyvolumeraycaster.h | 8 +++--- src/rendering/abufferrenderer.cpp | 16 +++++++----- src/rendering/framebufferrenderer.cpp | 16 +++++++----- src/rendering/raycastermanager.cpp | 22 ++++++++-------- src/rendering/renderable.cpp | 12 ++++----- 28 files changed, 84 insertions(+), 80 deletions(-) diff --git a/include/openspace/rendering/abufferrenderer.h b/include/openspace/rendering/abufferrenderer.h index f9c42b999c..46d802f4fb 100644 --- a/include/openspace/rendering/abufferrenderer.h +++ b/include/openspace/rendering/abufferrenderer.h @@ -78,7 +78,7 @@ public: * Responsible for calling renderEngine::setRenderData */ virtual void updateRendererData() override; - virtual void raycastersChanged(VolumeRaycaster* entity, bool attached) override; + virtual void raycastersChanged(VolumeRaycaster& raycaster, bool attached) override; private: void clear(); diff --git a/include/openspace/rendering/framebufferrenderer.h b/include/openspace/rendering/framebufferrenderer.h index a5e297ce86..01ec98b204 100644 --- a/include/openspace/rendering/framebufferrenderer.h +++ b/include/openspace/rendering/framebufferrenderer.h @@ -78,7 +78,7 @@ public: */ virtual void updateRendererData() override; - virtual void raycastersChanged(VolumeRaycaster* entity, bool attached) override; + virtual void raycastersChanged(VolumeRaycaster& raycaster, bool attached) override; private: std::map _raycastData; diff --git a/include/openspace/rendering/raycasterlistener.h b/include/openspace/rendering/raycasterlistener.h index 0acd4117d0..97a88b2d33 100644 --- a/include/openspace/rendering/raycasterlistener.h +++ b/include/openspace/rendering/raycasterlistener.h @@ -31,7 +31,7 @@ class VolumeRaycaster; class RaycasterListener { public: - virtual void raycastersChanged(VolumeRaycaster* raycaster, bool attached) = 0; + virtual void raycastersChanged(VolumeRaycaster& raycaster, bool attached) = 0; }; // RaycasterListener } // openspace diff --git a/include/openspace/rendering/raycastermanager.h b/include/openspace/rendering/raycastermanager.h index 42b306af42..18e2e7f35f 100644 --- a/include/openspace/rendering/raycastermanager.h +++ b/include/openspace/rendering/raycastermanager.h @@ -36,13 +36,13 @@ class RaycasterManager { public: RaycasterManager(); ~RaycasterManager(); - void attachRaycaster(VolumeRaycaster* raycaster); - void detachRaycaster(VolumeRaycaster* raycaster); - bool isAttached(VolumeRaycaster* raycaster); + void attachRaycaster(VolumeRaycaster& raycaster); + void detachRaycaster(VolumeRaycaster& raycaster); + bool isAttached(VolumeRaycaster& raycaster); const std::vector& raycasters(); - void addListener(RaycasterListener* listener); - void removeListener(RaycasterListener* listener); + void addListener(RaycasterListener& listener); + void removeListener(RaycasterListener& listener); private: std::vector _raycasters; std::vector _listeners; diff --git a/include/openspace/rendering/renderable.h b/include/openspace/rendering/renderable.h index 370e0d9d33..1e8554f462 100644 --- a/include/openspace/rendering/renderable.h +++ b/include/openspace/rendering/renderable.h @@ -81,7 +81,7 @@ public: void onEnabledChange(std::function callback); - static void setPscUniforms(ghoul::opengl::ProgramObject* program, const Camera* camera, const PowerScaledCoordinate& position); + static void setPscUniforms(ghoul::opengl::ProgramObject& program, const Camera& camera, const PowerScaledCoordinate& position); private: properties::BoolProperty _enabled; diff --git a/include/openspace/rendering/volumeraycaster.h b/include/openspace/rendering/volumeraycaster.h index 25c25fd406..5dfb480df8 100644 --- a/include/openspace/rendering/volumeraycaster.h +++ b/include/openspace/rendering/volumeraycaster.h @@ -51,24 +51,24 @@ public: /** * Render the volume's entry points (front face of the bounding geometry) */ - virtual void renderEntryPoints(const RenderData& data, ghoul::opengl::ProgramObject* program) = 0; + virtual void renderEntryPoints(const RenderData& data, ghoul::opengl::ProgramObject& program) = 0; /** * Render the volume's exit points (back face of the bounding geometry) */ - virtual void renderExitPoints(const RenderData& data, ghoul::opengl::ProgramObject* program) = 0; + virtual void renderExitPoints(const RenderData& data, ghoul::opengl::ProgramObject& program) = 0; /** * Prepare the volume for the ABuffer's resolve step. * Make sure textures are up to date, bind them to texture units, set program uniforms etc. */ - virtual void preRaycast(const RaycastData& data, ghoul::opengl::ProgramObject* program) {}; + virtual void preRaycast(const RaycastData& data, ghoul::opengl::ProgramObject& program) {}; /** * Clean up for the volume after the ABuffer's resolve step. * Make sure texture units are deinitialized, etc. */ - virtual void postRaycast(const RaycastData& data, ghoul::opengl::ProgramObject* program) {}; + virtual void postRaycast(const RaycastData& data, ghoul::opengl::ProgramObject& program) {}; /** * Return a path the file to use as vertex shader diff --git a/modules/base/rendering/renderableconstellationbounds.cpp b/modules/base/rendering/renderableconstellationbounds.cpp index 0162740458..0dd67d5b8a 100644 --- a/modules/base/rendering/renderableconstellationbounds.cpp +++ b/modules/base/rendering/renderableconstellationbounds.cpp @@ -162,7 +162,7 @@ void RenderableConstellationBounds::render(const RenderData& data) { glm::mat4 viewMatrix = data.camera.viewMatrix(); glm::mat4 projectionMatrix = data.camera.projectionMatrix(); - setPscUniforms(_program.get(), &data.camera, data.position); + setPscUniforms(*_program.get(), data.camera, data.position); _program->setUniform("exponent", _distance); _program->setUniform("ViewProjection", data.camera.viewProjectionMatrix()); diff --git a/modules/base/rendering/renderablemodel.cpp b/modules/base/rendering/renderablemodel.cpp index 2cedd9f929..f5a282e5b1 100644 --- a/modules/base/rendering/renderablemodel.cpp +++ b/modules/base/rendering/renderablemodel.cpp @@ -200,7 +200,7 @@ void RenderableModel::render(const RenderData& data) { _programObject->setUniform("sun_pos", _sunPosition.vec3()); _programObject->setUniform("ViewProjection", data.camera.viewProjectionMatrix()); _programObject->setUniform("ModelTransform", transform); - setPscUniforms(_programObject.get(), &data.camera, data.position); + setPscUniforms(*_programObject.get(), data.camera, data.position); _programObject->setUniform("_performShading", _performShading); diff --git a/modules/base/rendering/renderablepath.cpp b/modules/base/rendering/renderablepath.cpp index 327ccad32c..9a3db1f4dd 100644 --- a/modules/base/rendering/renderablepath.cpp +++ b/modules/base/rendering/renderablepath.cpp @@ -162,7 +162,7 @@ void RenderablePath::render(const RenderData& data) { _programObject->setUniform("ModelTransform", transform); _programObject->setUniform("color", _lineColor); _programObject->setUniform("lastPosition", _lastPosition); - setPscUniforms(_programObject.get(), &data.camera, data.position); + setPscUniforms(*_programObject.get(), data.camera, data.position); if (_drawLine) { glLineWidth(_lineWidth); diff --git a/modules/base/rendering/renderableplane.cpp b/modules/base/rendering/renderableplane.cpp index 348aa6b731..08af66a937 100644 --- a/modules/base/rendering/renderableplane.cpp +++ b/modules/base/rendering/renderableplane.cpp @@ -206,7 +206,7 @@ void RenderablePlane::render(const RenderData& data) { _shader->setUniform("ViewProjection", data.camera.viewProjectionMatrix()); _shader->setUniform("ModelTransform", transform); - setPscUniforms(_shader.get(), &data.camera, data.position); + setPscUniforms(*_shader.get(), data.camera, data.position); ghoul::opengl::TextureUnit unit; unit.activate(); diff --git a/modules/base/rendering/renderableplanet.cpp b/modules/base/rendering/renderableplanet.cpp index 08032110cf..25f4c201b4 100644 --- a/modules/base/rendering/renderableplanet.cpp +++ b/modules/base/rendering/renderableplanet.cpp @@ -213,7 +213,7 @@ void RenderablePlanet::render(const RenderData& data) _programObject->setUniform("transparency", _alpha); _programObject->setUniform("ViewProjection", data.camera.viewProjectionMatrix()); _programObject->setUniform("ModelTransform", transform); - setPscUniforms(_programObject.get(), &data.camera, data.position); + setPscUniforms(*_programObject.get(), data.camera, data.position); _programObject->setUniform("_performShading", _performShading); diff --git a/modules/base/rendering/renderablesphere.cpp b/modules/base/rendering/renderablesphere.cpp index 72e5ff6589..879086eb33 100644 --- a/modules/base/rendering/renderablesphere.cpp +++ b/modules/base/rendering/renderablesphere.cpp @@ -162,7 +162,7 @@ void RenderableSphere::render(const RenderData& data) { _shader->setUniform("ViewProjection", data.camera.viewProjectionMatrix()); _shader->setUniform("ModelTransform", transform); - setPscUniforms(_shader.get(), &data.camera, data.position); + setPscUniforms(*_shader.get(), data.camera, data.position); _shader->setUniform("alpha", _transparency); ghoul::opengl::TextureUnit unit; diff --git a/modules/base/rendering/renderablesphericalgrid.cpp b/modules/base/rendering/renderablesphericalgrid.cpp index a08f95ca81..8de5c30c83 100644 --- a/modules/base/rendering/renderablesphericalgrid.cpp +++ b/modules/base/rendering/renderablesphericalgrid.cpp @@ -212,7 +212,7 @@ void RenderableSphericalGrid::render(const RenderData& data){ _gridProgram->setIgnoreUniformLocationError(IgnoreError::Yes); _gridProgram->setUniform("ViewProjection", data.camera.viewProjectionMatrix()); _gridProgram->setUniform("ModelTransform", transform); - setPscUniforms(_gridProgram, &data.camera, data.position); + setPscUniforms(*_gridProgram, data.camera, data.position); _gridProgram->setUniform("gridColor", _gridColor); glLineWidth(0.5f); diff --git a/modules/base/rendering/renderablestars.cpp b/modules/base/rendering/renderablestars.cpp index e1d35fd81b..503eaa1c67 100644 --- a/modules/base/rendering/renderablestars.cpp +++ b/modules/base/rendering/renderablestars.cpp @@ -203,7 +203,7 @@ void RenderableStars::render(const RenderData& data) { _program->setUniform("scaleFactor", _scaleFactor); _program->setUniform("minBillboardSize", _minBillboardSize); - setPscUniforms(_program.get(), &data.camera, data.position); + setPscUniforms(*_program.get(), data.camera, data.position); _program->setUniform("scaling", scaling); ghoul::opengl::TextureUnit psfUnit; diff --git a/modules/base/rendering/renderabletrail.cpp b/modules/base/rendering/renderabletrail.cpp index cce8732c33..279792bb07 100644 --- a/modules/base/rendering/renderabletrail.cpp +++ b/modules/base/rendering/renderabletrail.cpp @@ -155,7 +155,7 @@ void RenderableTrail::render(const RenderData& data) { // setup the data to the shader _programObject->setUniform("ViewProjection", data.camera.viewProjectionMatrix()); _programObject->setUniform("ModelTransform", transform); - setPscUniforms(_programObject.get(), &data.camera, data.position); + setPscUniforms(*_programObject.get(), data.camera, data.position); _programObject->setUniform("color", _lineColor); _programObject->setUniform("nVertices", static_cast(_vertexArray.size())); diff --git a/modules/newhorizons/rendering/renderablecrawlingline.cpp b/modules/newhorizons/rendering/renderablecrawlingline.cpp index e2118342a3..2b63e17383 100644 --- a/modules/newhorizons/rendering/renderablecrawlingline.cpp +++ b/modules/newhorizons/rendering/renderablecrawlingline.cpp @@ -140,7 +140,7 @@ void RenderableCrawlingLine::render(const RenderData& data) { _program->setUniform("_alpha", alpha); _program->setUniform("color", _lineColor); - setPscUniforms(_program.get(), &data.camera, data.position); + setPscUniforms(*_program.get(), data.camera, data.position); glBindVertexArray(_vao); glBindBuffer(GL_ARRAY_BUFFER, _vbo); diff --git a/modules/newhorizons/rendering/renderablefov.cpp b/modules/newhorizons/rendering/renderablefov.cpp index bac5f40e02..d0c5cbb91c 100644 --- a/modules/newhorizons/rendering/renderablefov.cpp +++ b/modules/newhorizons/rendering/renderablefov.cpp @@ -549,7 +549,7 @@ void RenderableFov::render(const RenderData& data) { // setup the data to the shader _programObject->setUniform("ViewProjection", data.camera.viewProjectionMatrix()); _programObject->setUniform("ModelTransform", glm::mat4(1)); - setPscUniforms(_programObject.get(), &data.camera, data.position); + setPscUniforms(*_programObject.get(), data.camera, data.position); if (openspace::ImageSequencer2::ref().isReady()) _drawFOV = ImageSequencer2::ref().instrumentActive(_instrumentID); diff --git a/modules/newhorizons/rendering/renderablemodelprojection.cpp b/modules/newhorizons/rendering/renderablemodelprojection.cpp index 70a0758ae2..5ecbc90ccd 100644 --- a/modules/newhorizons/rendering/renderablemodelprojection.cpp +++ b/modules/newhorizons/rendering/renderablemodelprojection.cpp @@ -331,7 +331,7 @@ void RenderableModelProjection::render(const RenderData& data) { _viewProjection = data.camera.viewProjectionMatrix(); _programObject->setUniform("ViewProjection", _viewProjection); _programObject->setUniform("ModelTransform", _transform); - setPscUniforms(_programObject.get(), &data.camera, data.position); + setPscUniforms(*_programObject.get(), data.camera, data.position); textureBind(); _geometry->render(); diff --git a/modules/newhorizons/rendering/renderableplaneprojection.cpp b/modules/newhorizons/rendering/renderableplaneprojection.cpp index 9dd45d40a8..a0b928c17d 100644 --- a/modules/newhorizons/rendering/renderableplaneprojection.cpp +++ b/modules/newhorizons/rendering/renderableplaneprojection.cpp @@ -147,7 +147,7 @@ void RenderablePlaneProjection::render(const RenderData& data) { _shader->setUniform("ViewProjection", data.camera.viewProjectionMatrix()); _shader->setUniform("ModelTransform", transform); - setPscUniforms(_shader.get(), &data.camera, data.position); + setPscUniforms(*_shader.get(), data.camera, data.position); ghoul::opengl::TextureUnit unit; unit.activate(); diff --git a/modules/newhorizons/rendering/renderableplanetprojection.cpp b/modules/newhorizons/rendering/renderableplanetprojection.cpp index 23367c0b70..383516051c 100644 --- a/modules/newhorizons/rendering/renderableplanetprojection.cpp +++ b/modules/newhorizons/rendering/renderableplanetprojection.cpp @@ -541,7 +541,7 @@ void RenderablePlanetProjection::render(const RenderData& data){ _programObject->setUniform("ViewProjection" , data.camera.viewProjectionMatrix()); _programObject->setUniform("ModelTransform" , _transform); _programObject->setUniform("boresight" , _boresight); - setPscUniforms(_programObject.get(), &data.camera, data.position); + setPscUniforms(*_programObject.get(), data.camera, data.position); textureBind(); diff --git a/modules/newhorizons/rendering/renderableshadowcylinder.cpp b/modules/newhorizons/rendering/renderableshadowcylinder.cpp index a6aa0bb07f..062706fd3a 100644 --- a/modules/newhorizons/rendering/renderableshadowcylinder.cpp +++ b/modules/newhorizons/rendering/renderableshadowcylinder.cpp @@ -136,7 +136,7 @@ void RenderableShadowCylinder::render(const RenderData& data){ _shader->setUniform("ViewProjection", data.camera.viewProjectionMatrix()); _shader->setUniform("ModelTransform", _transform); _shader->setUniform("shadowColor", _shadowColor); - setPscUniforms(_shader.get(), &data.camera, data.position); + setPscUniforms(*_shader.get(), data.camera, data.position); glBindVertexArray(_vao); glDrawArrays(GL_TRIANGLE_STRIP, 0, static_cast(_vertices.size())); diff --git a/modules/toyvolume/rendering/renderabletoyvolume.cpp b/modules/toyvolume/rendering/renderabletoyvolume.cpp index feb0e0b6b2..23e1a1d670 100644 --- a/modules/toyvolume/rendering/renderabletoyvolume.cpp +++ b/modules/toyvolume/rendering/renderabletoyvolume.cpp @@ -80,14 +80,14 @@ bool RenderableToyVolume::initialize() { _raycaster = std::make_unique(ToyVolumeRaycaster(_color)); _raycaster->initialize(); - OsEng.renderEngine().raycasterManager().attachRaycaster(_raycaster.get()); + OsEng.renderEngine().raycasterManager().attachRaycaster(*_raycaster.get()); std::function onChange = [&](bool enabled) { if (enabled) { - OsEng.renderEngine().raycasterManager().attachRaycaster(_raycaster.get()); + OsEng.renderEngine().raycasterManager().attachRaycaster(*_raycaster.get()); } else { - OsEng.renderEngine().raycasterManager().detachRaycaster(_raycaster.get()); + OsEng.renderEngine().raycasterManager().detachRaycaster(*_raycaster.get()); } }; @@ -105,7 +105,7 @@ bool RenderableToyVolume::initialize() { bool RenderableToyVolume::deinitialize() { if (_raycaster) { - OsEng.renderEngine().raycasterManager().detachRaycaster(_raycaster.get()); + OsEng.renderEngine().raycasterManager().detachRaycaster(*_raycaster.get()); _raycaster = nullptr; } return true; diff --git a/modules/toyvolume/rendering/toyvolumeraycaster.cpp b/modules/toyvolume/rendering/toyvolumeraycaster.cpp index cd2cb2d950..8687f93744 100644 --- a/modules/toyvolume/rendering/toyvolumeraycaster.cpp +++ b/modules/toyvolume/rendering/toyvolumeraycaster.cpp @@ -53,10 +53,10 @@ void ToyVolumeRaycaster::initialize() { void ToyVolumeRaycaster::deinitialize() { } -void ToyVolumeRaycaster::renderEntryPoints(const RenderData& data, ghoul::opengl::ProgramObject* program) { - program->setUniform("modelTransform", _modelTransform); - program->setUniform("viewProjection", data.camera.viewProjectionMatrix()); - Renderable::setPscUniforms(program, &data.camera, data.position); +void ToyVolumeRaycaster::renderEntryPoints(const RenderData& data, ghoul::opengl::ProgramObject& program) { + program.setUniform("modelTransform", _modelTransform); + program.setUniform("viewProjection", data.camera.viewProjectionMatrix()); + Renderable::setPscUniforms(program, data.camera, data.position); // Cull back face glEnable(GL_CULL_FACE); @@ -66,11 +66,11 @@ void ToyVolumeRaycaster::renderEntryPoints(const RenderData& data, ghoul::opengl _boundingBox.render(); } -void ToyVolumeRaycaster::renderExitPoints(const RenderData& data, ghoul::opengl::ProgramObject* program) { +void ToyVolumeRaycaster::renderExitPoints(const RenderData& data, ghoul::opengl::ProgramObject& program) { // Uniforms - program->setUniform("modelTransform", _modelTransform); - program->setUniform("viewProjection", data.camera.viewProjectionMatrix()); - Renderable::setPscUniforms(program, &data.camera, data.position); + program.setUniform("modelTransform", _modelTransform); + program.setUniform("viewProjection", data.camera.viewProjectionMatrix()); + Renderable::setPscUniforms(program, data.camera, data.position); // Cull front face glEnable(GL_CULL_FACE); @@ -83,16 +83,16 @@ void ToyVolumeRaycaster::renderExitPoints(const RenderData& data, ghoul::opengl: glCullFace(GL_BACK); } -void ToyVolumeRaycaster::preRaycast(const RaycastData& data, ghoul::opengl::ProgramObject* program) { +void ToyVolumeRaycaster::preRaycast(const RaycastData& data, ghoul::opengl::ProgramObject& program) { std::string colorUniformName = "color" + std::to_string(data.id); std::string timeUniformName = "time" + std::to_string(data.id); std::string stepSizeUniformName = "maxStepSize" + std::to_string(data.id); - program->setUniform(colorUniformName, _color); - program->setUniform(stepSizeUniformName, _stepSize); - program->setUniform(timeUniformName, static_cast(std::fmod(_time, 3600.0))); + program.setUniform(colorUniformName, _color); + program.setUniform(stepSizeUniformName, _stepSize); + program.setUniform(timeUniformName, static_cast(std::fmod(_time, 3600.0))); } -void ToyVolumeRaycaster::postRaycast(const RaycastData& data, ghoul::opengl::ProgramObject* program) { +void ToyVolumeRaycaster::postRaycast(const RaycastData& data, ghoul::opengl::ProgramObject& program) { // For example: release texture units } diff --git a/modules/toyvolume/rendering/toyvolumeraycaster.h b/modules/toyvolume/rendering/toyvolumeraycaster.h index 677ef0c999..4924276a20 100644 --- a/modules/toyvolume/rendering/toyvolumeraycaster.h +++ b/modules/toyvolume/rendering/toyvolumeraycaster.h @@ -52,10 +52,10 @@ public: virtual ~ToyVolumeRaycaster(); void initialize(); void deinitialize(); - void renderEntryPoints(const RenderData& data, ghoul::opengl::ProgramObject* program) override; - void renderExitPoints(const RenderData& data, ghoul::opengl::ProgramObject* program) override; - void preRaycast(const RaycastData& data, ghoul::opengl::ProgramObject* program) override; - void postRaycast(const RaycastData& data, ghoul::opengl::ProgramObject* program) override; + void renderEntryPoints(const RenderData& data, ghoul::opengl::ProgramObject& program) override; + void renderExitPoints(const RenderData& data, ghoul::opengl::ProgramObject& program) override; + void preRaycast(const RaycastData& data, ghoul::opengl::ProgramObject& program) override; + void postRaycast(const RaycastData& data, ghoul::opengl::ProgramObject& program) override; std::string getBoundsVsPath() const override; std::string getBoundsFsPath() const override; diff --git a/src/rendering/abufferrenderer.cpp b/src/rendering/abufferrenderer.cpp index 652ebbe714..e0f4783ec5 100644 --- a/src/rendering/abufferrenderer.cpp +++ b/src/rendering/abufferrenderer.cpp @@ -118,7 +118,7 @@ void ABufferRenderer::initialize() { LERROR(e.message); } - OsEng.renderEngine().raycasterManager().addListener(this); + OsEng.renderEngine().raycasterManager().addListener(*this); } void ABufferRenderer::deinitialize() { @@ -133,10 +133,12 @@ void ABufferRenderer::deinitialize() { glDeleteBuffers(1, &_vertexPositionBuffer); glDeleteVertexArrays(1, &_screenQuad); - OsEng.renderEngine().raycasterManager().removeListener(this); + OsEng.renderEngine().raycasterManager().removeListener(*this); } -void ABufferRenderer::raycastersChanged(VolumeRaycaster* raycaster, bool attached) { +void ABufferRenderer::raycastersChanged(VolumeRaycaster& raycaster, bool attached) { + (void) raycaster; + (void) attached; _dirtyRaycastData = true; } @@ -221,9 +223,9 @@ void ABufferRenderer::render(float blackoutFactor, bool doPerformanceMeasurement if (program) { program->activate(); program->setUniform("_exit_", false); - raycaster->renderEntryPoints(raycasterTask.renderData, program); + raycaster->renderEntryPoints(raycasterTask.renderData, *program); program->setUniform("_exit_", true); - raycaster->renderExitPoints(raycasterTask.renderData, program); + raycaster->renderExitPoints(raycasterTask.renderData, *program); program->deactivate(); } else { @@ -239,7 +241,7 @@ void ABufferRenderer::render(float blackoutFactor, bool doPerformanceMeasurement VolumeRaycaster* raycaster = raycasterTask.raycaster; auto raycastData = _raycastData.find(raycaster); if (raycastData != _raycastData.end()) { - raycaster->preRaycast(raycastData->second, _resolveProgram.get()); + raycaster->preRaycast(raycastData->second, *_resolveProgram.get()); } } @@ -254,7 +256,7 @@ void ABufferRenderer::render(float blackoutFactor, bool doPerformanceMeasurement VolumeRaycaster* raycaster = raycasterTask.raycaster; auto raycastData = _raycastData.find(raycaster); if (raycastData != _raycastData.end()) { - raycaster->postRaycast(raycastData->second, _resolveProgram.get()); + raycaster->postRaycast(raycastData->second, *_resolveProgram.get()); } } diff --git a/src/rendering/framebufferrenderer.cpp b/src/rendering/framebufferrenderer.cpp index 5743faaf09..f9a441aafe 100644 --- a/src/rendering/framebufferrenderer.cpp +++ b/src/rendering/framebufferrenderer.cpp @@ -120,7 +120,7 @@ void FramebufferRenderer::initialize() { LERROR(e.message); } - OsEng.renderEngine().raycasterManager().addListener(this); + OsEng.renderEngine().raycasterManager().addListener(*this); _nAaSamples = OsEng.windowWrapper().currentNumberOfAaSamples(); if (_nAaSamples > 8) { @@ -143,10 +143,12 @@ void FramebufferRenderer::deinitialize() { glDeleteBuffers(1, &_vertexPositionBuffer); glDeleteVertexArrays(1, &_screenQuad); - OsEng.renderEngine().raycasterManager().removeListener(this); + OsEng.renderEngine().raycasterManager().removeListener(*this); } -void FramebufferRenderer::raycastersChanged(VolumeRaycaster* raycaster, bool attached) { +void FramebufferRenderer::raycastersChanged(VolumeRaycaster& raycaster, bool attached) { + (void) raycaster; + (void) attached; _dirtyRaycastData = true; } @@ -321,7 +323,7 @@ void FramebufferRenderer::render(float blackoutFactor, bool doPerformanceMeasure ghoul::opengl::ProgramObject* exitProgram = _exitPrograms[raycaster].get(); if (exitProgram) { exitProgram->activate(); - raycaster->renderExitPoints(raycasterTask.renderData, exitProgram); + raycaster->renderExitPoints(raycasterTask.renderData, *exitProgram); exitProgram->deactivate(); } @@ -330,7 +332,7 @@ void FramebufferRenderer::render(float blackoutFactor, bool doPerformanceMeasure ghoul::opengl::ProgramObject* raycastProgram = _raycastPrograms[raycaster].get(); if (raycastProgram) { raycastProgram->activate(); - raycaster->preRaycast(_raycastData[raycaster], raycastProgram); + raycaster->preRaycast(_raycastData[raycaster], *raycastProgram); ghoul::opengl::TextureUnit exitColorTextureUnit; exitColorTextureUnit.activate(); @@ -351,11 +353,11 @@ void FramebufferRenderer::render(float blackoutFactor, bool doPerformanceMeasure glDisable(GL_DEPTH_TEST); glDepthMask(false); - raycaster->renderEntryPoints(raycasterTask.renderData, raycastProgram); + raycaster->renderEntryPoints(raycasterTask.renderData, *raycastProgram); glDepthMask(true); glEnable(GL_DEPTH_TEST); - raycaster->postRaycast(_raycastData[raycaster], raycastProgram); + raycaster->postRaycast(_raycastData[raycaster], *raycastProgram); raycastProgram->deactivate(); } else { LWARNING("Raycaster is not attached when trying to perform raycaster task"); diff --git a/src/rendering/raycastermanager.cpp b/src/rendering/raycastermanager.cpp index 798cd79329..0e4a806e03 100644 --- a/src/rendering/raycastermanager.cpp +++ b/src/rendering/raycastermanager.cpp @@ -36,23 +36,23 @@ RaycasterManager::RaycasterManager() {} RaycasterManager::~RaycasterManager() {} -void RaycasterManager::attachRaycaster(VolumeRaycaster* raycaster) { +void RaycasterManager::attachRaycaster(VolumeRaycaster& raycaster) { if (!isAttached(raycaster)) { - _raycasters.push_back(raycaster); + _raycasters.push_back(&raycaster); } for (auto &listener : _listeners) { listener->raycastersChanged(raycaster, true); } } -bool RaycasterManager::isAttached(VolumeRaycaster* raycaster) { - auto it = std::find(_raycasters.begin(), _raycasters.end(), raycaster); +bool RaycasterManager::isAttached(VolumeRaycaster& raycaster) { + auto it = std::find(_raycasters.begin(), _raycasters.end(), &raycaster); return it != _raycasters.end(); } -void RaycasterManager::detachRaycaster(VolumeRaycaster* raycaster) { - auto it = std::find(_raycasters.begin(), _raycasters.end(), raycaster); +void RaycasterManager::detachRaycaster(VolumeRaycaster& raycaster) { + auto it = std::find(_raycasters.begin(), _raycasters.end(), &raycaster); if (it != _raycasters.end()) { _raycasters.erase(it); for (auto &listener : _listeners) { @@ -62,15 +62,15 @@ void RaycasterManager::detachRaycaster(VolumeRaycaster* raycaster) { } -void RaycasterManager::addListener(RaycasterListener* listener) { - auto it = std::find(_listeners.begin(), _listeners.end(), listener); +void RaycasterManager::addListener(RaycasterListener& listener) { + auto it = std::find(_listeners.begin(), _listeners.end(), &listener); if (it == _listeners.end()) { - _listeners.push_back(listener); + _listeners.push_back(&listener); } } -void RaycasterManager::removeListener(RaycasterListener* listener) { - auto it = std::find(_listeners.begin(), _listeners.end(), listener); +void RaycasterManager::removeListener(RaycasterListener& listener) { + auto it = std::find(_listeners.begin(), _listeners.end(), &listener); if (it != _listeners.end()) { _listeners.erase(it); } diff --git a/src/rendering/renderable.cpp b/src/rendering/renderable.cpp index cdbcf19509..812625b755 100644 --- a/src/rendering/renderable.cpp +++ b/src/rendering/renderable.cpp @@ -122,14 +122,14 @@ void Renderable::render(const RenderData& data) } void Renderable::setPscUniforms( - ghoul::opengl::ProgramObject* program, - const Camera* camera, + ghoul::opengl::ProgramObject& program, + const Camera& camera, const PowerScaledCoordinate& position) { - program->setUniform("campos", camera->position().vec4()); - program->setUniform("objpos", position.vec4()); - program->setUniform("camrot", camera->viewRotationMatrix()); - program->setUniform("scaling", camera->scaling()); + program.setUniform("campos", camera.position().vec4()); + program.setUniform("objpos", position.vec4()); + program.setUniform("camrot", camera.viewRotationMatrix()); + program.setUniform("scaling", camera.scaling()); } bool Renderable::isVisible() const {