Unify drawing logic into glUtils.
This commit is contained in:
@@ -12,17 +12,7 @@ void ImageInteractionAnimation::draw(float step)
|
|||||||
caffe::caffe_scal(deltas.size(), step, vertexBuffer.data());
|
caffe::caffe_scal(deltas.size(), step, vertexBuffer.data());
|
||||||
caffe::caffe_add(vertexBuffer.size(), vertexBuffer.data(), startingPositions.data(), vertexBuffer.data());
|
caffe::caffe_add(vertexBuffer.size(), vertexBuffer.data(), startingPositions.data(), vertexBuffer.data());
|
||||||
|
|
||||||
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
drawImageTiles(vertexBuffer.size() / 3, vertexBuffer.data(), textureCoordinates.data(), texture);
|
||||||
glEnableClientState(GL_VERTEX_ARRAY);
|
|
||||||
glEnable(GL_TEXTURE_2D);
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
|
|
||||||
texture.bind(GL_TEXTURE_2D);
|
|
||||||
glTexCoordPointer(2, GL_FLOAT, 0, textureCoordinates.data());
|
|
||||||
glVertexPointer(3, GL_FLOAT, 0, vertexBuffer.data());
|
|
||||||
glDrawArrays(GL_QUADS, 0, vertexBuffer.size() / 3);
|
|
||||||
glDisable(GL_TEXTURE_2D);
|
|
||||||
glDisableClientState(GL_VERTEX_ARRAY);
|
|
||||||
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ImageInteractionAnimation::ImageInteractionAnimation(const DType *data, const std::vector<int> &shape,
|
ImageInteractionAnimation::ImageInteractionAnimation(const DType *data, const std::vector<int> &shape,
|
||||||
|
|||||||
@@ -26,17 +26,7 @@ MultiImageVisualisation::MultiImageVisualisation(const fmri::LayerData &layer)
|
|||||||
|
|
||||||
void MultiImageVisualisation::render()
|
void MultiImageVisualisation::render()
|
||||||
{
|
{
|
||||||
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
drawImageTiles(vertexBuffer.size() / 3, vertexBuffer.data(), texCoordBuffer.data(), texture);
|
||||||
glEnableClientState(GL_VERTEX_ARRAY);
|
|
||||||
glEnable(GL_TEXTURE_2D);
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
|
|
||||||
texture.bind(GL_TEXTURE_2D);
|
|
||||||
glTexCoordPointer(2, GL_FLOAT, 0, texCoordBuffer.data());
|
|
||||||
glVertexPointer(3, GL_FLOAT, 0, vertexBuffer.data());
|
|
||||||
glDrawArrays(GL_QUADS, 0, vertexBuffer.size() / 3);
|
|
||||||
glDisable(GL_TEXTURE_2D);
|
|
||||||
glDisableClientState(GL_VERTEX_ARRAY);
|
|
||||||
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
vector<float> MultiImageVisualisation::getVertices(const std::vector<float> &nodePositions, float scaling)
|
vector<float> MultiImageVisualisation::getVertices(const std::vector<float> &nodePositions, float scaling)
|
||||||
|
|||||||
@@ -35,17 +35,7 @@ void PoolingLayerAnimation::draw(float timeStep)
|
|||||||
caffe::caffe_scal(vertexBuffer.size(), timeStep, vertexBuffer.data());
|
caffe::caffe_scal(vertexBuffer.size(), timeStep, vertexBuffer.data());
|
||||||
caffe::caffe_add(startingPositions.size(), startingPositions.data(), vertexBuffer.data(), vertexBuffer.data());
|
caffe::caffe_add(startingPositions.size(), startingPositions.data(), vertexBuffer.data(), vertexBuffer.data());
|
||||||
|
|
||||||
glEnableClientState(GL_VERTEX_ARRAY);
|
drawImageTiles(vertexBuffer.size() / 3, vertexBuffer.data(), textureCoordinates.data(), original);
|
||||||
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
|
||||||
glEnable(GL_TEXTURE_2D);
|
|
||||||
original.bind(GL_TEXTURE_2D);
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
|
|
||||||
glVertexPointer(3, GL_FLOAT, 0, vertexBuffer.data());
|
|
||||||
glTexCoordPointer(2, GL_FLOAT, 0, textureCoordinates.data());
|
|
||||||
glDrawArrays(GL_QUADS, 0, vertexBuffer.size() / 3);
|
|
||||||
glDisable(GL_TEXTURE_2D);
|
|
||||||
glDisableClientState(GL_VERTEX_ARRAY);
|
|
||||||
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Texture PoolingLayerAnimation::loadTextureForData(const LayerData &data)
|
Texture PoolingLayerAnimation::loadTextureForData(const LayerData &data)
|
||||||
|
|||||||
@@ -138,3 +138,18 @@ void fmri::setOrthographicProjection() {
|
|||||||
// switch back to modelview mode
|
// switch back to modelview mode
|
||||||
glMatrixMode(GL_MODELVIEW);
|
glMatrixMode(GL_MODELVIEW);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void fmri::drawImageTiles(int n, const float *vertexBuffer, const float *textureCoords, const Texture &texture)
|
||||||
|
{
|
||||||
|
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||||
|
glEnableClientState(GL_VERTEX_ARRAY);
|
||||||
|
glEnable(GL_TEXTURE_2D);
|
||||||
|
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
|
||||||
|
texture.bind(GL_TEXTURE_2D);
|
||||||
|
glTexCoordPointer(2, GL_FLOAT, 0, textureCoords);
|
||||||
|
glVertexPointer(3, GL_FLOAT, 0, vertexBuffer);
|
||||||
|
glDrawArrays(GL_QUADS, 0, n);
|
||||||
|
glDisable(GL_TEXTURE_2D);
|
||||||
|
glDisableClientState(GL_VERTEX_ARRAY);
|
||||||
|
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||||
|
}
|
||||||
|
|||||||
@@ -49,4 +49,16 @@ namespace fmri {
|
|||||||
void setOrthographicProjection();
|
void setOrthographicProjection();
|
||||||
|
|
||||||
void restorePerspectiveProjection();
|
void restorePerspectiveProjection();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Draw a series of textured tiles to the screen.
|
||||||
|
*
|
||||||
|
* This function ends up drawing GL_QUADS.
|
||||||
|
*
|
||||||
|
* @param n Number of vertices
|
||||||
|
* @param vertexBuffer
|
||||||
|
* @param textureCoords
|
||||||
|
* @param texture
|
||||||
|
*/
|
||||||
|
void drawImageTiles(int n, const float* vertexBuffer, const float* textureCoords, const Texture& texture);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user