From f85e18dc1861e57899bece75f2de89d57b56f8f8 Mon Sep 17 00:00:00 2001 From: Jonas Strandstedt Date: Wed, 5 Nov 2014 17:11:27 +0100 Subject: [PATCH] OS X now doesn't crash for volumes - Fixed a few warnings --- include/openspace/abuffer/abuffer.h | 17 +++-- .../{abuffer_i.h => abufferframebuffer.h} | 40 ++++++----- .../openspace/rendering/renderableephemeris.h | 2 +- include/openspace/rendering/renderabletrail.h | 4 +- include/openspace/rendering/renderengine.h | 11 +++ .../rendering/stars/renderablestars.h | 2 +- src/abuffer/abuffer.cpp | 29 +++++--- src/abuffer/abufferframebuffer.cpp | 68 +++++++++++++++++++ src/engine/openspaceengine.cpp | 6 +- src/interaction/luaconsole.cpp | 1 - src/rendering/model/renderablemodel.cpp | 4 +- src/rendering/model/wavefrontgeometry.cpp | 2 +- src/rendering/planets/renderableplanet.cpp | 4 +- src/rendering/renderableephemeris.cpp | 2 +- src/rendering/renderablefieldlines.cpp | 7 +- src/rendering/renderablepath.cpp | 3 +- src/rendering/renderablesphericalgrid.cpp | 4 +- src/rendering/renderabletrail.cpp | 3 +- src/rendering/renderablevolume.cpp | 37 ++++++++-- src/rendering/renderengine.cpp | 37 +++++----- src/rendering/stars/renderablestars.cpp | 12 ---- src/scenegraph/scenegraphnode.cpp | 6 +- src/scripting/scriptengine.cpp | 2 +- src/util/powerscaledsphere.cpp | 2 +- 24 files changed, 212 insertions(+), 93 deletions(-) rename include/openspace/abuffer/{abuffer_i.h => abufferframebuffer.h} (79%) create mode 100644 src/abuffer/abufferframebuffer.cpp diff --git a/include/openspace/abuffer/abuffer.h b/include/openspace/abuffer/abuffer.h index aa12cb63f5..19bf5c05a8 100644 --- a/include/openspace/abuffer/abuffer.h +++ b/include/openspace/abuffer/abuffer.h @@ -25,23 +25,25 @@ #ifndef __ABUFFER_H__ #define __ABUFFER_H__ -#include - #include #include -#include -#include +#include +#include namespace ghoul { + namespace filesystem { + class File; + } namespace opengl { + class ProgramObject; class Texture; } } namespace openspace { -class ABuffer: public ABuffer_I { +class ABuffer { public: static const int MAX_LAYERS = 32; @@ -49,6 +51,7 @@ public: ABuffer(); virtual ~ABuffer(); virtual void resolve(); + virtual bool initialize() = 0; virtual bool reinitialize(); void addVolume(const std::string& tag,ghoul::opengl::Texture* volume); @@ -56,6 +59,10 @@ public: int addSamplerfile(const std::string& filename); void invalidateABuffer(); + + virtual void clear() = 0; + virtual void preRender() = 0; + virtual void postRender() = 0; protected: virtual std::string settings() = 0; diff --git a/include/openspace/abuffer/abuffer_i.h b/include/openspace/abuffer/abufferframebuffer.h similarity index 79% rename from include/openspace/abuffer/abuffer_i.h rename to include/openspace/abuffer/abufferframebuffer.h index b6e568deae..46d71b1a4d 100644 --- a/include/openspace/abuffer/abuffer_i.h +++ b/include/openspace/abuffer/abufferframebuffer.h @@ -22,23 +22,31 @@ * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * ****************************************************************************************/ -#ifndef __ABUFFER_I_H__ -#define __ABUFFER_I_H__ +#ifndef __ABUFFERFRAMEBUFFER_H__ +#define __ABUFFERFRAMEBUFFER_H__ + +#include namespace openspace { - -class ABuffer_I { + +class ABufferFramebuffer: public ABuffer { public: - virtual ~ABuffer_I() {}; - virtual bool initialize() = 0; - virtual bool reinitialize() = 0; + + ABufferFramebuffer(); + virtual ~ABufferFramebuffer(); + virtual bool initialize(); + + virtual void clear(); + virtual void preRender(); + virtual void postRender(); + + virtual std::string settings(); +protected: + virtual bool reinitializeInternal(); + +private: + +}; // ABufferSingleLinked +} // openspace - virtual void clear() = 0; - virtual void preRender() = 0; - virtual void postRender() = 0; - virtual void resolve() = 0; - -}; // ABuffer_I -} // openspace - -#endif // __ABUFFER_I_H__ \ No newline at end of file +#endif // __ABUFFERSINGLELINKED_H__ \ No newline at end of file diff --git a/include/openspace/rendering/renderableephemeris.h b/include/openspace/rendering/renderableephemeris.h index 865ea75b90..59a85322b9 100644 --- a/include/openspace/rendering/renderableephemeris.h +++ b/include/openspace/rendering/renderableephemeris.h @@ -73,7 +73,7 @@ public: Vertex* _varray; int* _iarray; - Vertex* batchArray; + //Vertex* batchArray; bool* _updated; psc _pscpos, _pscvel; diff --git a/include/openspace/rendering/renderabletrail.h b/include/openspace/rendering/renderabletrail.h index 8748f92b99..d68196db95 100644 --- a/include/openspace/rendering/renderabletrail.h +++ b/include/openspace/rendering/renderabletrail.h @@ -87,7 +87,7 @@ public: std::vector _varray; int* _iarray; - bool _once = false; + //bool _once = false; double lightTime; //used for update of trail psc _pscpos, _pscvel; @@ -97,7 +97,7 @@ public: float _dtEt; int _delta = 0; - int _dtprogress = 0; + //int _dtprogress = 0; }; } #endif \ No newline at end of file diff --git a/include/openspace/rendering/renderengine.h b/include/openspace/rendering/renderengine.h index a741c7a191..c0ad553ba1 100644 --- a/include/openspace/rendering/renderengine.h +++ b/include/openspace/rendering/renderengine.h @@ -28,6 +28,17 @@ #include #include +#define ABUFFER_FRAMEBUFFER 0 +#define ABUFFER_SINGLE_LINKED 1 +#define ABUFFER_FIXED 2 +#define ABUFFER_DYNAMIC 3 + +#ifdef __APPLE__ +#define ABUFFER_IMPLEMENTATION ABUFFER_FRAMEBUFFER +#else +#define ABUFFER_IMPLEMENTATION ABUFFER_SINGLE_LINKED +#endif + namespace openspace { // Forward declare to minimize dependencies diff --git a/include/openspace/rendering/stars/renderablestars.h b/include/openspace/rendering/stars/renderablestars.h index dc63c335d8..fa52926f29 100644 --- a/include/openspace/rendering/stars/renderablestars.h +++ b/include/openspace/rendering/stars/renderablestars.h @@ -64,7 +64,7 @@ private: std::string _speckPath; - GLint vertsToDraw; + //GLint vertsToDraw; GLuint _vboID; GLuint _vaoID; diff --git a/src/abuffer/abuffer.cpp b/src/abuffer/abuffer.cpp index c304a93609..b45967f6f1 100644 --- a/src/abuffer/abuffer.cpp +++ b/src/abuffer/abuffer.cpp @@ -26,8 +26,11 @@ #include #include -#include +#include #include +#include +#include + #include #include @@ -36,11 +39,12 @@ namespace { - const std::string generatedSettingsPath = "${SHADERS_GENERATED}/ABufferSettings.hglsl"; - const std::string generatedHeadersPath = "${SHADERS_GENERATED}/ABufferHeaders.hglsl"; + const std::string generatedSettingsPath = "${SHADERS_GENERATED}/ABufferSettings.hglsl"; + const std::string generatedHeadersPath = "${SHADERS_GENERATED}/ABufferHeaders.hglsl"; const std::string generatedSamplerCallsPath = "${SHADERS_GENERATED}/ABufferSamplerCalls.hglsl"; - const std::string generatedTransferFunctionVisualizerPath = "${SHADERS_GENERATED}/ABufferTransferFunctionVisualizer.hglsl"; - const std::string generatedSamplersPath = "${SHADERS_GENERATED}/ABufferSamplers.hglsl"; + const std::string generatedTransferFunctionVisualizerPath = + "${SHADERS_GENERATED}/ABufferTransferFunctionVisualizer.hglsl"; + const std::string generatedSamplersPath = "${SHADERS_GENERATED}/ABufferSamplers.hglsl"; const std::string _loggerCat = "ABuffer"; @@ -80,7 +84,8 @@ bool ABuffer::initializeABuffer() { if (!_resolveShader) return false; - + +#ifndef __APPLE__ // ============================ // GEOMETRY (quad) // ============================ @@ -102,7 +107,7 @@ bool ABuffer::initializeABuffer() { glBufferData(GL_ARRAY_BUFFER, sizeof(vertex_data), vertex_data, GL_STATIC_DRAW); glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, sizeof(GLfloat)*4, reinterpret_cast(0)); glEnableVertexAttribArray(0); - +#endif return true; } @@ -114,6 +119,7 @@ bool ABuffer::reinitialize() { } void ABuffer::resolve() { +#ifndef __APPLE__ if( ! _validShader) { generateShaderSource(); updateShader(); @@ -147,7 +153,8 @@ void ABuffer::resolve() { glBindVertexArray(_screenQuad); glDrawArrays(GL_TRIANGLES, 0, 6); - _resolveShader->deactivate(); + _resolveShader->deactivate(); +#endif } void ABuffer::addVolume(const std::string& tag,ghoul::opengl::Texture* volume) { @@ -161,7 +168,8 @@ void ABuffer::addTransferFunction(const std::string& tag,ghoul::opengl::Texture* int ABuffer::addSamplerfile(const std::string& filename) { if( ! FileSys.fileExists(filename)) return -1; - + +#ifndef __APPLE__ auto fileCallback = [this](const ghoul::filesystem::File& file) { _validShader = false; }; @@ -173,6 +181,9 @@ int ABuffer::addSamplerfile(const std::string& filename) { // ID is one more than "actual" position since ID=0 is considered geometry //return 1 << (_samplers.size()-1); return static_cast(_samplers.size()); +#else + return 0; +#endif } bool ABuffer::updateShader() { diff --git a/src/abuffer/abufferframebuffer.cpp b/src/abuffer/abufferframebuffer.cpp new file mode 100644 index 0000000000..91c53f7fe2 --- /dev/null +++ b/src/abuffer/abufferframebuffer.cpp @@ -0,0 +1,68 @@ +/***************************************************************************************** + * * + * OpenSpace * + * * + * Copyright (c) 2014 * + * * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this * + * software and associated documentation files (the "Software"), to deal in the Software * + * without restriction, including without limitation the rights to use, copy, modify, * + * merge, publish, distribute, sublicense, and/or sell copies of the Software, and to * + * permit persons to whom the Software is furnished to do so, subject to the following * + * conditions: * + * * + * The above copyright notice and this permission notice shall be included in all copies * + * or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A * + * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF * + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE * + * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + ****************************************************************************************/ + +#include +#include + +#include +#include + +#include +#include +#include + +namespace { + std::string _loggerCat = "ABufferSingleLinked"; +} + +namespace openspace { + +ABufferFramebuffer::ABufferFramebuffer() {} + +ABufferFramebuffer::~ABufferFramebuffer() {} + +bool ABufferFramebuffer::initialize() { + return initializeABuffer(); +} + +bool ABufferFramebuffer::reinitializeInternal() { + return true; +} + +void ABufferFramebuffer::clear() { +} + +void ABufferFramebuffer::preRender() { +} + +void ABufferFramebuffer::postRender() { + +} + +std::string ABufferFramebuffer::settings() { + return R"()"; +} + + +} // openspace \ No newline at end of file diff --git a/src/engine/openspaceengine.cpp b/src/engine/openspaceengine.cpp index 73029edcfe..a6723a4adb 100644 --- a/src/engine/openspaceengine.cpp +++ b/src/engine/openspaceengine.cpp @@ -81,9 +81,9 @@ OpenSpaceEngine* OpenSpaceEngine::_engine = nullptr; OpenSpaceEngine::OpenSpaceEngine(std::string programName) : _commandlineParser(programName, true) - , _inputCommand(false) - , _console(nullptr) - , _syncBuffer(nullptr) + , _syncBuffer(nullptr) + , _inputCommand(false) + , _console(nullptr) { // initialize OpenSpace helpers SpiceManager::initialize(); diff --git a/src/interaction/luaconsole.cpp b/src/interaction/luaconsole.cpp index 8464a39884..99ba0fcd06 100644 --- a/src/interaction/luaconsole.cpp +++ b/src/interaction/luaconsole.cpp @@ -314,7 +314,6 @@ void LuaConsole::render() { float startY = static_cast(ySize) - 2.0f * font_size; startY = startY - font_size * 10.0f * 2.0f; - const float font_with = font_size*0.7f; const glm::vec4 red(1, 0, 0, 1); const glm::vec4 green(0, 1, 0, 1); const glm::vec4 white(1, 1, 1, 1); diff --git a/src/rendering/model/renderablemodel.cpp b/src/rendering/model/renderablemodel.cpp index 8106ce64c5..040145a8e0 100644 --- a/src/rendering/model/renderablemodel.cpp +++ b/src/rendering/model/renderablemodel.cpp @@ -137,8 +137,8 @@ void RenderableModel::render(const RenderData& data) transform *= tmp; - glm::mat4 modelview = data.camera.viewMatrix()*data.camera.modelMatrix(); - glm::vec3 camSpaceEye = (-(modelview*data.position.vec4())).xyz; + //glm::mat4 modelview = data.camera.viewMatrix()*data.camera.modelMatrix(); + //glm::vec3 camSpaceEye = (-(modelview*data.position.vec4())).xyz; // setup the data to the shader // _programObject->setUniform("camdir", camSpaceEye); diff --git a/src/rendering/model/wavefrontgeometry.cpp b/src/rendering/model/wavefrontgeometry.cpp index 5ad4d9a21d..5b2ee5e5ed 100644 --- a/src/rendering/model/wavefrontgeometry.cpp +++ b/src/rendering/model/wavefrontgeometry.cpp @@ -79,7 +79,7 @@ void WavefrontGeometry::loadObj(const char *filename){ float f1, f2, f3; int i1, i2, i3, i4, i5, i6, i7, i8, i9; char line[150]; - float maxtex = 0.0; + //float maxtex = 0.0; FILE *fi; // START LINE COUNT diff --git a/src/rendering/planets/renderableplanet.cpp b/src/rendering/planets/renderableplanet.cpp index 363bd4d0b5..4c21e91c8e 100644 --- a/src/rendering/planets/renderableplanet.cpp +++ b/src/rendering/planets/renderableplanet.cpp @@ -129,8 +129,8 @@ void RenderablePlanet::render(const RenderData& data) } transform = transform* rot; - glm::mat4 modelview = data.camera.viewMatrix()*data.camera.modelMatrix(); - glm::vec3 camSpaceEye = (-(modelview*data.position.vec4())).xyz; + //glm::mat4 modelview = data.camera.viewMatrix()*data.camera.modelMatrix(); + //glm::vec3 camSpaceEye = (-(modelview*data.position.vec4())).xyz; // setup the data to the shader // _programObject->setUniform("camdir", camSpaceEye); diff --git a/src/rendering/renderableephemeris.cpp b/src/rendering/renderableephemeris.cpp index ae41a681c8..de330b1b27 100644 --- a/src/rendering/renderableephemeris.cpp +++ b/src/rendering/renderableephemeris.cpp @@ -182,7 +182,7 @@ void RenderableEphemeris::nextIndex(){ int x = (_index[0] > _index[1]) ? _index[0] : _index[1]; if (x >= _vsize - 1 || skip + x > _vsize ) x = 1; - for (x; x < _vsize; x++){ + for (; x < _vsize; x++){ double t1 = _intervals[x - 1].second; double t2 = _intervals[x].second; diff --git a/src/rendering/renderablefieldlines.cpp b/src/rendering/renderablefieldlines.cpp index 7301266bf1..29c6d23f56 100644 --- a/src/rendering/renderablefieldlines.cpp +++ b/src/rendering/renderablefieldlines.cpp @@ -218,7 +218,7 @@ void RenderableFieldlines::render(const RenderData& data) { glm::mat4 transform = data.camera.viewProjectionMatrix(); glm::mat4 camTransform = data.camera.viewRotationMatrix(); - psc relative = data.position - data.camera.position(); + //psc relative = data.position - data.camera.position(); transform = transform*camTransform; transform = glm::mat4(1.0); @@ -315,7 +315,10 @@ std::vector > RenderableFieldlines::getFieldlinesData(std // ------ CLASSIFICATION & COLOR ----------- hintsDictionary.getValue("Color", fieldlineColor); hintsDictionary.getValue("Classification", classification); - } + } else { + // model unitialized! + assert(false); + } KameleonWrapper kw(filename, model); if (lorentz) { diff --git a/src/rendering/renderablepath.cpp b/src/rendering/renderablepath.cpp index 4ccbd1e65b..4e4c822c1a 100644 --- a/src/rendering/renderablepath.cpp +++ b/src/rendering/renderablepath.cpp @@ -84,7 +84,6 @@ void RenderablePath::fullYearSweep(){ std::cout << _time << std::endl; // -------------------------------------- ^ this has to be simulation start-time, not passed in here though -- - double et2 = 0; //SpiceManager::ref().getETfromDate("2008 apr 01 00:00:00", et2); //psc nhpos, nhvel; //SpiceManager::ref().getTargetState("NEW HORIZONS", "SUN", "J2000", "LT+S", et2, _pscpos, _pscvel, lightTime); @@ -192,7 +191,7 @@ void RenderablePath::render(const RenderData& data){ psc campos = data.camera.position(); glm::mat4 camrot = data.camera.viewRotationMatrix(); // PowerScaledScalar scaling = camera->scaling(); - PowerScaledScalar scaling = glm::vec2(1, -6); + //PowerScaledScalar scaling = glm::vec2(1, -6); glm::mat4 transform = glm::mat4(1); diff --git a/src/rendering/renderablesphericalgrid.cpp b/src/rendering/renderablesphericalgrid.cpp index 7ef6339d31..1cf8cbbd2f 100644 --- a/src/rendering/renderablesphericalgrid.cpp +++ b/src/rendering/renderablesphericalgrid.cpp @@ -72,7 +72,7 @@ RenderableSphericalGrid::RenderableSphericalGrid(const ghoul::Dictionary& dictio const float fsegments = static_cast(_segments); const float r = static_cast(radius[0]); - int nr2 = 0; + //int nr2 = 0; for (int i = 0; i <= _segments; i++) { // define an extra vertex around the y-axis due to texture mapping @@ -94,7 +94,7 @@ RenderableSphericalGrid::RenderableSphericalGrid(const ghoul::Dictionary& dictio if (!(x == 0.f && y == 0.f && z == 0.f)) normal = glm::normalize(normal); - const float t1 = fj / fsegments; + //const float t1 = fj / fsegments; const float t2 = fi / fsegments; // tex coord. not used, use to manip color diff --git a/src/rendering/renderabletrail.cpp b/src/rendering/renderabletrail.cpp index 95b088a964..900c80d11a 100644 --- a/src/rendering/renderabletrail.cpp +++ b/src/rendering/renderabletrail.cpp @@ -186,7 +186,6 @@ bool RenderableTrail::initialize(){ //loadTexture(); completeSuccess &= (_texture != nullptr); - _startTrail; // SpiceManager::ref().getETfromDate("2006 Aug 22 17:00:00", _startTrail); SpiceManager::ref().getETfromDate("2007 feb 26 17:30:00", _startTrail); _dtEt = _startTrail; @@ -223,7 +222,7 @@ psc pscInterpolate(psc p0, psc p1, float t){ void RenderableTrail::updateTrail(){ int m = _stride; float *begin = &_varray[0]; - float *end = &_varray[_vsize - 1] + 1; + //float *end = &_varray[_vsize - 1] + 1; // update only when time progresses if (_oldTime != _time){ diff --git a/src/rendering/renderablevolume.cpp b/src/rendering/renderablevolume.cpp index 13e884d318..87577c0816 100644 --- a/src/rendering/renderablevolume.cpp +++ b/src/rendering/renderablevolume.cpp @@ -151,9 +151,23 @@ ghoul::opengl::Texture* RenderableVolume::loadVolume( ss << "." << dimensions[0] << "x" << dimensions[1] << "x" << dimensions[2] << "." << modelString << "." << variableCacheString << ".cache"; std::string cachepath; // = filepath + ss.str(); - FileSys.cacheManager()->getCachedFile(filepath, ss.str(), cachepath, true); + ghoul::filesystem::File ghlFile(filepath); + FileSys.cacheManager()->getCachedFile(ghlFile.baseName(), ss.str(), cachepath, true); + LERROR(cachepath); if (cache && FileSys.fileExists(cachepath)) { - + + std::ifstream file(cachepath, std::ios::binary | std::ios::in); + if (file.is_open()) { + size_t length = dimensions[0] *dimensions[1] *dimensions[2]; + float* data = new float[length]; + file.read(reinterpret_cast(data), sizeof(float)*length); + file.close(); + return new ghoul::opengl::Texture(data, dimensions, ghoul::opengl::Texture::Format::Red, GL_RED, GL_FLOAT, filtermode, wrappingmode); + } else { + return nullptr; + } + + /* FILE* file = fopen (cachepath.c_str(), "rb"); size_t length = dimensions[0] *dimensions[1] *dimensions[2]; @@ -166,7 +180,8 @@ ghoul::opengl::Texture* RenderableVolume::loadVolume( } fclose(file); - return new ghoul::opengl::Texture(data, dimensions, ghoul::opengl::Texture::Format::Red, GL_RED, GL_FLOAT, filtermode, wrappingmode); + */ + //return new ghoul::opengl::Texture(data, dimensions, ghoul::opengl::Texture::Format::Red, GL_RED, GL_FLOAT, filtermode, wrappingmode); } KameleonWrapper::Model model; @@ -184,10 +199,20 @@ ghoul::opengl::Texture* RenderableVolume::loadVolume( if (hintsDictionary.hasKey("Variable") && hintsDictionary.getValue("Variable", variableString)) { float* data = kw.getUniformSampledValues(variableString, dimensions); if(cache) { + std::ofstream file(cachepath, std::ios::binary | std::ios::out); + if (file.is_open()) { + size_t length = dimensions[0] * dimensions[1] * dimensions[2]; + file.write(reinterpret_cast(data), sizeof(float)*length); + file.close(); + } + /* FILE* file = fopen (cachepath.c_str(), "wb"); - size_t length = dimensions[0] * dimensions[1] * dimensions[2]; - fwrite(data, sizeof(float), length, file); - fclose(file); + if(file) { + size_t length = dimensions[0] * dimensions[1] * dimensions[2]; + fwrite(data, sizeof(float), length, file); + fclose(file); + } + */ } return new ghoul::opengl::Texture(data, dimensions, ghoul::opengl::Texture::Format::Red, GL_RED, GL_FLOAT, filtermode, wrappingmode); } else if (hintsDictionary.hasKey("Variables")) { diff --git a/src/rendering/renderengine.cpp b/src/rendering/renderengine.cpp index b5b31fa3b4..5d370cc811 100644 --- a/src/rendering/renderengine.cpp +++ b/src/rendering/renderengine.cpp @@ -44,6 +44,7 @@ #include #include +#include #include #include #include @@ -77,10 +78,10 @@ RenderEngine::RenderEngine() : _mainCamera(nullptr) , _sceneGraph(nullptr) , _abuffer(nullptr) + , _log(nullptr) + , _showInfo(true) + , _showScreenLog(true) , _takeScreenshot(false) - , _log(nullptr) - , _showInfo(true) - , _showScreenLog(true) { } @@ -98,15 +99,17 @@ bool RenderEngine::initialize() _mainCamera->setScaling(glm::vec2(1.0, -8.0)); _mainCamera->setPosition(psc(0.f, 0.f, 1.499823f, 11.f)); OsEng.interactionHandler().setCamera(_mainCamera); -#ifndef __APPLE__ -#if ABUFFER_IMPLEMENTATION == ABUFFER_SINGLE_LINKED + +#if ABUFFER_IMPLEMENTATION == ABUFFER_FRAMEBUFFER + _abuffer = new ABufferFramebuffer(); +#elif ABUFFER_IMPLEMENTATION == ABUFFER_SINGLE_LINKED _abuffer = new ABufferSingleLinked(); #elif ABUFFER_IMPLEMENTATION == ABUFFER_FIXED _abuffer = new ABufferFixed(); #elif ABUFFER_IMPLEMENTATION == ABUFFER_DYNAMIC _abuffer = new ABufferDynamic(); #endif -#endif + return true; } @@ -178,9 +181,9 @@ bool RenderEngine::initializeGL() } _mainCamera->setMaxFov(maxFov); } -#ifndef __APPLE__ + _abuffer->initialize(); -#endif + _log = new ScreenLog(); ghoul::logging::LogManager::ref().addLog(_log); @@ -200,9 +203,7 @@ void RenderEngine::postSynchronizationPreDraw() } if (updateAbuffer) { generateGlslConfig(); - #ifndef __APPLE__ _abuffer->reinitialize(); - #endif } // converts the quaternion used to rotation matrices @@ -214,18 +215,21 @@ void RenderEngine::postSynchronizationPreDraw() _sceneGraph->evaluate(_mainCamera); // clear the abuffer before rendering the scene -#ifndef __APPLE__ _abuffer->clear(); -#endif } void RenderEngine::render() { // SGCT resets certain settings +#ifndef __APPLE__ glDisable(GL_DEPTH_TEST); glDisable(GL_CULL_FACE); glDisable(GL_BLEND); - +#else + glEnable(GL_DEPTH_TEST); + glDisable(GL_CULL_FACE); + glDisable(GL_BLEND); +#endif // setup the camera for the current frame const glm::vec3 eyePosition = sgct_core::ClusterManager::instance()->getUserPtr()->getPos(); @@ -246,18 +250,15 @@ void RenderEngine::render() // render the scene starting from the root node -#ifndef __APPLE__ _abuffer->preRender(); -#endif _sceneGraph->render({*_mainCamera, psc()}); -#ifndef __APPLE__ _abuffer->postRender(); - + glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); _abuffer->resolve(); glDisable(GL_BLEND); -#endif + // Print some useful information on the master viewport sgct::SGCTWindow* w = sgct::Engine::instance()->getActiveWindowPtr(); if (sgct::Engine::instance()->isMaster() && ! w->isUsingFisheyeRendering()) { diff --git a/src/rendering/stars/renderablestars.cpp b/src/rendering/stars/renderablestars.cpp index 7b4dc96e1a..8ad791b18e 100644 --- a/src/rendering/stars/renderablestars.cpp +++ b/src/rendering/stars/renderablestars.cpp @@ -44,18 +44,6 @@ #define _USE_MATH_DEFINES #include -int printOglError(char *file, int line){ - GLenum glErr; - int retCode = 0; - glErr = glGetError(); - if (glErr != GL_NO_ERROR){ - printf("glError %s\n", gluErrorString(glErr)); - retCode = 1; - } - return retCode; -} - - #define GLSPRITES //#define GLPOINTS diff --git a/src/scenegraph/scenegraphnode.cpp b/src/scenegraph/scenegraphnode.cpp index 8a4f1acb67..b53f88957e 100644 --- a/src/scenegraph/scenegraphnode.cpp +++ b/src/scenegraph/scenegraphnode.cpp @@ -181,9 +181,9 @@ void SceneGraphNode::update(const UpdateData& data) void SceneGraphNode::evaluate(const Camera* camera, const psc& parentPosition) { - const psc thisPosition = parentPosition + _ephemeris->position(); - const psc camPos = camera->position(); - const psc toCamera = thisPosition - camPos; + //const psc thisPosition = parentPosition + _ephemeris->position(); + //const psc camPos = camera->position(); + //const psc toCamera = thisPosition - camPos; // init as not visible _boundingSphereVisible = false; diff --git a/src/scripting/scriptengine.cpp b/src/scripting/scriptengine.cpp index 098b543cc6..d7f9ce3dbd 100644 --- a/src/scripting/scriptengine.cpp +++ b/src/scripting/scriptengine.cpp @@ -166,7 +166,7 @@ namespace { const std::string _openspaceLibraryName = "openspace"; const std::string _luaGlobalNamespace = "_G"; const std::string _printFunctionName = "print"; - const lua_CFunction _printFunctionReplacement = luascriptfunctions::printInfo; + //const lua_CFunction _printFunctionReplacement = luascriptfunctions::printInfo; const int _setTableOffset = -3; // -1 (top) -1 (first argument) -1 (second argument) diff --git a/src/util/powerscaledsphere.cpp b/src/util/powerscaledsphere.cpp index 27c274c7cc..bbcca78e4f 100644 --- a/src/util/powerscaledsphere.cpp +++ b/src/util/powerscaledsphere.cpp @@ -77,7 +77,7 @@ PowerScaledSphere::PowerScaledSphere(const PowerScaledScalar& radius, int segmen const float t1 = fj / fsegments; const float t2 = fi / fsegments; - double tp = 1.0 / pow(10, static_cast(radius[1])); + //double tp = 1.0 / pow(10, static_cast(radius[1])); _varray[nr].location[0] = x; _varray[nr].location[1] = y;