Implement increasing particle sizes. Refs #1.
This commit is contained in:
@@ -63,7 +63,6 @@ ActivityAnimation::ActivityAnimation(
|
||||
void ActivityAnimation::draw(float timeScale)
|
||||
{
|
||||
const auto &vertexBuffer = animate(startingPos, delta, timeScale);
|
||||
glPointSize(5);
|
||||
|
||||
glEnableClientState(GL_VERTEX_ARRAY);
|
||||
glEnableClientState(GL_COLOR_ARRAY);
|
||||
|
||||
@@ -33,8 +33,8 @@ namespace fmri
|
||||
0, 2, 3,
|
||||
1, 2, 3
|
||||
};
|
||||
constexpr const auto VERTICES_PER_NODE = NODE_SHAPE.size() / 3;
|
||||
constexpr const auto FACES_PER_NODE = NODE_FACES.size() / 3;
|
||||
static constexpr auto VERTICES_PER_NODE = std::tuple_size<typeof(NODE_SHAPE)>::value / 3;
|
||||
static constexpr auto FACES_PER_NODE = std::tuple_size<typeof(NODE_FACES)>::value / 3;
|
||||
|
||||
void setVertexPositions(int vertexNo, float *destination);
|
||||
|
||||
|
||||
@@ -32,6 +32,15 @@ static float getFPS()
|
||||
return fps;
|
||||
}
|
||||
|
||||
static void updatePointSize(float dir) {
|
||||
float size, granularity;
|
||||
glGetFloatv(GL_POINT_SIZE, &size);
|
||||
glGetFloatv(GL_POINT_SIZE_GRANULARITY, &granularity);
|
||||
granularity = std::max(0.5f, granularity);
|
||||
size += dir * granularity;
|
||||
glPointSize(std::max(1.f, size));
|
||||
}
|
||||
|
||||
void RenderingState::move(unsigned char key, bool sprint)
|
||||
{
|
||||
float speed = 0.5f;
|
||||
@@ -102,6 +111,14 @@ void RenderingState::handleKey(unsigned char x)
|
||||
toggle(options.activatedOnly);
|
||||
break;
|
||||
|
||||
case '+':
|
||||
updatePointSize(1);
|
||||
break;
|
||||
|
||||
case '-':
|
||||
updatePointSize(-1);
|
||||
break;
|
||||
|
||||
default:
|
||||
// Do nothing.
|
||||
break;
|
||||
@@ -259,6 +276,7 @@ void RenderingState::renderOverlayText() const
|
||||
"i: toggle interactions visible\n"
|
||||
"o: toggle activated nodes only\n"
|
||||
"p: toggle interaction paths visible\n"
|
||||
"+/-: increase/decrease particle size\n"
|
||||
"q: quit\n";
|
||||
}
|
||||
|
||||
@@ -332,3 +350,22 @@ const Color &RenderingState::pathColor() const
|
||||
{
|
||||
return options.pathColor;
|
||||
}
|
||||
|
||||
RenderingState::RenderingState() noexcept
|
||||
{
|
||||
// Enable depth test to fix objects behind you
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
|
||||
// Nicer rendering
|
||||
glEnable(GL_POINT_SMOOTH);
|
||||
glEnable(GL_LINE_SMOOTH);
|
||||
glEnable(GL_POLYGON_SMOOTH);
|
||||
glHint(GL_POINT_SMOOTH_HINT, GL_NICEST);
|
||||
glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
|
||||
glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST);
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
// Set initial point size
|
||||
glPointSize(3);
|
||||
}
|
||||
|
||||
@@ -73,7 +73,7 @@ namespace fmri
|
||||
std::vector<std::unique_ptr<LayerVisualisation>> layerVisualisations;
|
||||
std::vector<std::unique_ptr<Animation>> interactionAnimations;
|
||||
|
||||
RenderingState() noexcept = default;
|
||||
RenderingState() noexcept;
|
||||
|
||||
void configureRenderingContext() const;
|
||||
|
||||
|
||||
@@ -67,19 +67,6 @@ int main(int argc, char *argv[])
|
||||
|
||||
RenderingState::instance().registerControls();
|
||||
|
||||
// Enable depth test to fix objects behind you
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
|
||||
// Nicer rendering
|
||||
glEnable(GL_POINT_SMOOTH);
|
||||
glEnable(GL_LINE_SMOOTH);
|
||||
glEnable(GL_POLYGON_SMOOTH);
|
||||
glHint(GL_POINT_SMOOTH_HINT, GL_NICEST);
|
||||
glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
|
||||
glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST);
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
// Start visualisation
|
||||
glutMainLoop();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user