summaryrefslogtreecommitdiffstats
path: root/Smoke/renderer_gl.c
diff options
context:
space:
mode:
Diffstat (limited to 'Smoke/renderer_gl.c')
-rw-r--r--Smoke/renderer_gl.c74
1 files changed, 62 insertions, 12 deletions
diff --git a/Smoke/renderer_gl.c b/Smoke/renderer_gl.c
index 1d722ce..1f6b9a4 100644
--- a/Smoke/renderer_gl.c
+++ b/Smoke/renderer_gl.c
@@ -15,6 +15,7 @@
#include "funcs.h"
#include "fluids.h"
#include "palette.h"
+#include "normals.h"
#include "smoke.h"
#include "colormap.h"
#include "glyphs.h"
@@ -47,8 +48,9 @@ float x_pos = DEFAULT_X_POS;
float y_pos = DEFAULT_Y_POS;
float z_pos = DEFAULT_ZOOM;
+static int renderer_grid = FALSE;
+
static int renderer_zoomspeed = DEFAULT_ZOOM_SPEED;
-static int normals_render = FALSE;
static void render_legend(void)
{
@@ -135,6 +137,10 @@ static void render_legend(void)
glEnable(GL_DEPTH_TEST);
}
+static void render_grid(void)
+{
+}
+
static void render_normal(void)
{
int i, j, idx, DIM;
@@ -169,6 +175,42 @@ static void render_normal(void)
}
+static void render_normals(void)
+{
+ int i, j, idx, DIM;
+ double px, py;
+ fftw_real wn, hn;
+ fftw_real *height;
+
+ DIM = fluids_get_dim();
+ wn = (fftw_real)winWidth / (fftw_real)(DIM + 1); // Grid cell width
+ hn = (fftw_real)winHeight / (fftw_real)(DIM + 1); // Grid cell height
+ float normal_scale = 10.0f;
+
+ height = heightplots_get_frame();
+
+ glDisable(GL_LIGHTING);
+ glBegin(GL_LINES);
+ glColor3f(0.2f, 1.0f, 0.0f);
+
+ for (j = 0; j < DIM - 1; j++)
+ {
+ for (i = 0; i < DIM; i++)
+ {
+ idx = (j * DIM) + i;
+ px = wn + (fftw_real)i * wn;
+ py = hn + (fftw_real)(j + 1) * hn;
+
+ glVertex3f(px, py, height[idx]);
+ glVertex3f(px + normal_array[idx].x * normal_scale,
+ py + normal_array[idx].y * normal_scale,
+ height[idx] + normal_array[idx].z * normal_scale);
+ }
+ }
+ glEnable(GL_LIGHTING);
+ glEnd();
+}
+
static void render_smoke(void)
{
int i, j, idx, DIM;
@@ -636,6 +678,16 @@ void renderer_init_gl(void)
}
+void renderer_set_grid(grid)
+{
+ renderer_grid = grid;
+}
+
+int renderer_get_grid(void)
+{
+ return renderer_grid;
+}
+
void renderer_set_zoomspeed(int zoomspeed)
{
renderer_zoomspeed = zoomspeed;
@@ -700,8 +752,12 @@ void visualize(struct vis_data_arrays *vis_data)
glTranslatef(-winWidth/2, -winHeight/2, 0.0f);
+ if (render_grid) {
+ render_grid();
+ }
+
if (isolines_get_render()) {
- render_isolines();
+ render_isolines();
}
if (smoke_get_render()) {
@@ -726,15 +782,9 @@ void visualize(struct vis_data_arrays *vis_data)
render_normal();
}
- render_legend();
-}
-
-int normals_get_render(void)
-{
- return normals_render;
-}
+ if (normals_get_render2()) {
+ render_normals();
+ }
-void normals_set_render(int normals)
-{
- normals_render = normals;
+ render_legend();
}