diff --git a/src/fmri/ImageInteractionAnimation.cpp b/src/fmri/ImageInteractionAnimation.cpp index 0fba9e7..57451c3 100644 --- a/src/fmri/ImageInteractionAnimation.cpp +++ b/src/fmri/ImageInteractionAnimation.cpp @@ -1,6 +1,7 @@ #include "ImageInteractionAnimation.hpp" #include "glutils.hpp" #include "MultiImageVisualisation.hpp" +#include "RenderingState.hpp" #include using namespace fmri; @@ -10,7 +11,9 @@ void ImageInteractionAnimation::draw(float step) { auto &vertexBuffer = animate(startingPositions, deltas, step); - drawImageTiles(vertexBuffer.size() / 3, vertexBuffer.data(), textureCoordinates.data(), texture); + float alpha = RenderingState::instance().interactionAlpha(); + + drawImageTiles(vertexBuffer.size() / 3, vertexBuffer.data(), textureCoordinates.data(), texture, alpha); } ImageInteractionAnimation::ImageInteractionAnimation(const DType *data, const std::vector &shape, const std::vector &prevPositions, diff --git a/src/fmri/InputLayerVisualisation.cpp b/src/fmri/InputLayerVisualisation.cpp index ba576bc..a5b0623 100644 --- a/src/fmri/InputLayerVisualisation.cpp +++ b/src/fmri/InputLayerVisualisation.cpp @@ -4,6 +4,8 @@ #include #include "InputLayerVisualisation.hpp" #include "Range.hpp" +#include "RenderingState.hpp" +#include "glutils.hpp" using namespace fmri; using namespace std; @@ -81,15 +83,7 @@ void InputLayerVisualisation::render() 0, 0, }; - glEnableClientState(GL_VERTEX_ARRAY); - glEnableClientState(GL_TEXTURE_COORD_ARRAY); - glVertexPointer(3, GL_FLOAT, 0, vertices); - glTexCoordPointer(2, GL_FLOAT, 0, texCoords); - glEnable(GL_TEXTURE_2D); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - texture.bind(GL_TEXTURE_2D); - glDrawArrays(GL_QUADS, 0, 4); - glDisable(GL_TEXTURE_2D); - glDisableClientState(GL_TEXTURE_COORD_ARRAY); - glDisableClientState(GL_VERTEX_ARRAY); + float alpha = RenderingState::instance().layerAlpha(); + + drawImageTiles(4, vertices, texCoords, texture, alpha); } diff --git a/src/fmri/MultiImageVisualisation.cpp b/src/fmri/MultiImageVisualisation.cpp index 0c67722..1487ece 100644 --- a/src/fmri/MultiImageVisualisation.cpp +++ b/src/fmri/MultiImageVisualisation.cpp @@ -2,6 +2,7 @@ #include "MultiImageVisualisation.hpp" #include "glutils.hpp" #include "Range.hpp" +#include "RenderingState.hpp" using namespace fmri; using namespace std; @@ -26,7 +27,8 @@ MultiImageVisualisation::MultiImageVisualisation(const fmri::LayerData &layer) void MultiImageVisualisation::render() { - drawImageTiles(vertexBuffer.size() / 3, vertexBuffer.data(), texCoordBuffer.data(), texture); + float alpha = RenderingState::instance().layerAlpha(); + drawImageTiles(vertexBuffer.size() / 3, vertexBuffer.data(), texCoordBuffer.data(), texture, alpha); } vector MultiImageVisualisation::getVertices(const std::vector &nodePositions, float scaling) diff --git a/src/fmri/PoolingLayerAnimation.cpp b/src/fmri/PoolingLayerAnimation.cpp index 4a09e01..dc26233 100644 --- a/src/fmri/PoolingLayerAnimation.cpp +++ b/src/fmri/PoolingLayerAnimation.cpp @@ -4,6 +4,7 @@ #include "PoolingLayerAnimation.hpp" #include "glutils.hpp" #include "MultiImageVisualisation.hpp" +#include "RenderingState.hpp" using namespace std; using namespace fmri; @@ -32,7 +33,9 @@ void PoolingLayerAnimation::draw(float timeStep) { auto& vertexBuffer = animate(startingPositions, deltas, timeStep); - drawImageTiles(vertexBuffer.size() / 3, vertexBuffer.data(), textureCoordinates.data(), original); + float alpha = RenderingState::instance().interactionAlpha(); + + drawImageTiles(vertexBuffer.size() / 3, vertexBuffer.data(), textureCoordinates.data(), original, alpha); } Texture PoolingLayerAnimation::loadTextureForData(const LayerData &data) diff --git a/src/fmri/glutils.cpp b/src/fmri/glutils.cpp index 63d894c..6e04160 100644 --- a/src/fmri/glutils.cpp +++ b/src/fmri/glutils.cpp @@ -138,12 +138,13 @@ void fmri::setOrthographicProjection() { glMatrixMode(GL_MODELVIEW); } -void fmri::drawImageTiles(int n, const float *vertexBuffer, const float *textureCoords, const Texture &texture) +void fmri::drawImageTiles(int n, const float *vertexBuffer, const float *textureCoords, const Texture &texture, float alpha) { glEnableClientState(GL_TEXTURE_COORD_ARRAY); glEnableClientState(GL_VERTEX_ARRAY); glEnable(GL_TEXTURE_2D); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + glColor4f(1, 1, 1, alpha); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); texture.bind(GL_TEXTURE_2D); glTexCoordPointer(2, GL_FLOAT, 0, textureCoords); glVertexPointer(3, GL_FLOAT, 0, vertexBuffer); diff --git a/src/fmri/glutils.hpp b/src/fmri/glutils.hpp index fcab4e8..4ac23c5 100644 --- a/src/fmri/glutils.hpp +++ b/src/fmri/glutils.hpp @@ -63,5 +63,6 @@ namespace fmri { * @param textureCoords * @param texture */ - void drawImageTiles(int n, const float* vertexBuffer, const float* textureCoords, const Texture& texture); + void + drawImageTiles(int n, const float *vertexBuffer, const float *textureCoords, const Texture &texture, float alpha); }