From 1d67e1ca225753d2bc8386d17919b340c9ae0366 Mon Sep 17 00:00:00 2001 From: michal Date: Tue, 28 Oct 2014 12:11:41 -0400 Subject: [PATCH] minor changes to renderable path. still in debug. --- src/rendering/renderablepath.cpp | 246 ++++++++++++++++--------------- 1 file changed, 125 insertions(+), 121 deletions(-) diff --git a/src/rendering/renderablepath.cpp b/src/rendering/renderablepath.cpp index 384953c6d4..4ccbd1e65b 100644 --- a/src/rendering/renderablepath.cpp +++ b/src/rendering/renderablepath.cpp @@ -78,159 +78,163 @@ namespace openspace{ } } void RenderablePath::fullYearSweep(){ - double lightTime = 0.0; - SpiceManager::ref().getETfromDate("2006 jan 20 19:00:00", _time); + double lightTime = 0.0; + SpiceManager::ref().getETfromDate("2006 jan 20 19:00:00", _time); - // -------------------------------------- ^ 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); + std::cout << _time << std::endl; - double et = _time; - int segments = 200000; - _increment = 86400; + // -------------------------------------- ^ 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); - _isize = (segments + 2); - _vsize = (segments + 2); - _iarray = new int[_isize]; + double et = _time; + int segments = 200000; + _increment = 86400; - int indx = 0; - for (int i = 0; i < segments + 1; i++){ - SpiceManager::ref().getTargetState(_target, _observer, _frame, "LT+S", et, _pscpos, _pscvel, lightTime); - if (_pscpos[0] != 0 && _pscpos[1] != 0 && _pscpos[2] != 0 && _pscpos[3] != 1){ - _pscpos[3] += 3; - _varray.push_back(_pscpos[0]); - _varray.push_back(_pscpos[1]); - _varray.push_back(_pscpos[2]); - _varray.push_back(_pscpos[3]); + _isize = (segments + 2); + _vsize = (segments + 2); + _iarray = new int[_isize]; + + int indx = 0; + for (int i = 0; i < segments + 1; i++){ + std::cout << i << std::endl; + bool gotData = SpiceManager::ref().getTargetPosition(_target, _observer, _frame, "LT+S", et, _pscpos, lightTime); + assert(gotData); + if (_pscpos[0] != 0 && _pscpos[1] != 0 && _pscpos[2] != 0 && _pscpos[3] != 1){ + _pscpos[3] += 3; + _varray.push_back(_pscpos[0]); + _varray.push_back(_pscpos[1]); + _varray.push_back(_pscpos[2]); + _varray.push_back(_pscpos[3]); #ifndef DEBUG - _varray.push_back(1.f - ((double)i / _tropic * _r)); - _varray.push_back(1.f - ((double)i / _tropic * _g)); - _varray.push_back(1.f - ((double)i / _tropic * _b)); - _varray.push_back(1.f - ((double)i / _tropic)); + _varray.push_back(1.f - ((double)i / _tropic * _r)); + _varray.push_back(1.f - ((double)i / _tropic * _g)); + _varray.push_back(1.f - ((double)i / _tropic * _b)); + _varray.push_back(1.f - ((double)i / _tropic)); #else - _varray.push_back(1.f); - _varray.push_back(1.f); - _varray.push_back(1.f); - _varray.push_back(0.5f); + _varray.push_back(1.f); + _varray.push_back(1.f); + _varray.push_back(1.f); + _varray.push_back(0.5f); #endif - indx++; - _iarray[indx] = indx; - } - else{ - std::string date; - SpiceManager::ref().getDateFromET(et, date); - std::cout << "STOPPED AT: " << date << std::endl; - break; - } - et += _increment; + indx++; + _iarray[indx] = indx; } - _stride = 8; - _vsize = _varray.size(); - _vtotal = static_cast(_vsize / _stride); + else{ + std::string date; + SpiceManager::ref().getDateFromET(et, date); + std::cout << "STOPPED AT: " << date << std::endl; + break; + } + et += _increment; } + _stride = 8; + _vsize = _varray.size(); + _vtotal = static_cast(_vsize / _stride); +} - RenderablePath::~RenderablePath(){ - deinitialize(); - } +RenderablePath::~RenderablePath(){ + deinitialize(); +} - bool RenderablePath::initialize(){ - bool completeSuccess = true; - if (_programObject == nullptr) - completeSuccess - &= OsEng.ref().configurationManager().getValue("EphemerisProgram", _programObject); +bool RenderablePath::initialize(){ + bool completeSuccess = true; + if (_programObject == nullptr) + completeSuccess + &= OsEng.ref().configurationManager().getValue("EphemerisProgram", _programObject); - //TEXTURES DISABLED FOR NOW - //loadTexture(); - completeSuccess &= (_texture != nullptr); + //TEXTURES DISABLED FOR NOW + //loadTexture(); + completeSuccess &= (_texture != nullptr); - fullYearSweep(); + fullYearSweep(); - // Initialize and upload to graphics card - glGenVertexArrays(1, &_vaoID); - glGenBuffers(1, &_vBufferID); - glGenBuffers(1, &_iBufferID); + // Initialize and upload to graphics card + glGenVertexArrays(1, &_vaoID); + glGenBuffers(1, &_vBufferID); + glGenBuffers(1, &_iBufferID); - glBindVertexArray(_vaoID); - glBindBuffer(GL_ARRAY_BUFFER, _vBufferID); - glBufferData(GL_ARRAY_BUFFER, _vsize * sizeof(GLfloat), NULL, GL_STREAM_DRAW); // orphaning the buffer, sending NULL data. - glBufferSubData(GL_ARRAY_BUFFER, 0, _vsize * sizeof(GLfloat), &_varray[0]); + glBindVertexArray(_vaoID); + glBindBuffer(GL_ARRAY_BUFFER, _vBufferID); + glBufferData(GL_ARRAY_BUFFER, _vsize * sizeof(GLfloat), NULL, GL_STREAM_DRAW); // orphaning the buffer, sending NULL data. + glBufferSubData(GL_ARRAY_BUFFER, 0, _vsize * sizeof(GLfloat), &_varray[0]); - GLsizei st = sizeof(GLfloat) * _stride; + GLsizei st = sizeof(GLfloat) * _stride; - glEnableVertexAttribArray(0); - glEnableVertexAttribArray(1); - glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, st, (void*)0); - glVertexAttribPointer(1, 4, GL_FLOAT, GL_FALSE, st, (void*)(4 * sizeof(GLfloat))); + glEnableVertexAttribArray(0); + glEnableVertexAttribArray(1); + glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, st, (void*)0); + glVertexAttribPointer(1, 4, GL_FLOAT, GL_FALSE, st, (void*)(4 * sizeof(GLfloat))); - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _iBufferID); - glBufferData(GL_ELEMENT_ARRAY_BUFFER, _isize * sizeof(int), _iarray, GL_STATIC_DRAW); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _iBufferID); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, _isize * sizeof(int), _iarray, GL_STATIC_DRAW); - glBindVertexArray(0); + glBindVertexArray(0); - return completeSuccess; - } + return completeSuccess; +} - bool RenderablePath::deinitialize(){ - delete _texture; - _texture = nullptr; - return true; - } +bool RenderablePath::deinitialize(){ + delete _texture; + _texture = nullptr; + return true; +} - void RenderablePath::render(const RenderData& data){ - assert(_programObject); - _programObject->activate(); +void RenderablePath::render(const RenderData& data){ + assert(_programObject); + _programObject->activate(); - // fetch data - psc currentPosition = data.position; - psc campos = data.camera.position(); - glm::mat4 camrot = data.camera.viewRotationMatrix(); - // PowerScaledScalar scaling = camera->scaling(); - PowerScaledScalar scaling = glm::vec2(1, -6); + // fetch data + psc currentPosition = data.position; + psc campos = data.camera.position(); + glm::mat4 camrot = data.camera.viewRotationMatrix(); + // PowerScaledScalar scaling = camera->scaling(); + PowerScaledScalar scaling = glm::vec2(1, -6); - glm::mat4 transform = glm::mat4(1); + glm::mat4 transform = glm::mat4(1); - // setup the data to the shader - //_programObject->setUniform("objectVelocity", pscvel.vec4()); - _programObject->setUniform("ViewProjection", data.camera.viewProjectionMatrix()); - _programObject->setUniform("ModelTransform", transform); - setPscUniforms(_programObject, &data.camera, data.position); + // setup the data to the shader + //_programObject->setUniform("objectVelocity", pscvel.vec4()); + _programObject->setUniform("ViewProjection", data.camera.viewProjectionMatrix()); + _programObject->setUniform("ModelTransform", transform); + setPscUniforms(_programObject, &data.camera, data.position); -/* glBindVertexArray(_vaoID); - glDrawArrays(_mode, 0, _vtotal); - glBindVertexArray(0); - */ - glPointSize(2.f); +/* glBindVertexArray(_vaoID); + glDrawArrays(_mode, 0, _vtotal); + glBindVertexArray(0); +*/ + glPointSize(2.f); - glBindVertexArray(_vaoID); - glDrawArrays(GL_POINTS, 0, _vtotal); - glBindVertexArray(0); - - _programObject->deactivate(); - } + glBindVertexArray(_vaoID); + glDrawArrays(GL_POINTS, 0, _vtotal); + glBindVertexArray(0); + + _programObject->deactivate(); +} - void RenderablePath::update(const UpdateData& data){ - double lightTime; - _time = data.time; - _delta = data.delta; - int newhorizons = 0; +void RenderablePath::update(const UpdateData& data){ + double lightTime; - SpiceManager::ref().getTargetState(_target, _observer, _frame, "LT+S", data.time, _pscpos, _pscvel, lightTime); - } + _time = data.time; + _delta = data.delta; - void RenderablePath::loadTexture() - { - delete _texture; - _texture = nullptr; - if (_colorTexturePath.value() != "") { - _texture = ghoul::opengl::loadTexture(absPath(_colorTexturePath)); - if (_texture) { - LDEBUG("Loaded texture from '" << absPath(_colorTexturePath) << "'"); - _texture->uploadTexture(); - } + SpiceManager::ref().getTargetState(_target, _observer, _frame, "LT+S", data.time, _pscpos, _pscvel, lightTime); +} + +void RenderablePath::loadTexture() +{ + delete _texture; + _texture = nullptr; + if (_colorTexturePath.value() != "") { + _texture = ghoul::opengl::loadTexture(absPath(_colorTexturePath)); + if (_texture) { + LDEBUG("Loaded texture from '" << absPath(_colorTexturePath) << "'"); + _texture->uploadTexture(); } } +} } \ No newline at end of file