diff options
author | Oliver Schinagl <oliver@schinagl.nl> | 2008-01-07 03:40:59 (GMT) |
---|---|---|
committer | Oliver Schinagl <oliver@schinagl.nl> | 2008-01-07 03:40:59 (GMT) |
commit | 8dc29e0202fb48c078aebf271b31e903a1076d95 (patch) | |
tree | 6c0dc33a9ddc7ce1fcee675df16fb70a785af95c /Smoke/renderer_gl.c | |
parent | 5297d5f9565da695a6a9891f829118ecaea6ad8a (diff) | |
download | 2iv35-8dc29e0202fb48c078aebf271b31e903a1076d95.zip 2iv35-8dc29e0202fb48c078aebf271b31e903a1076d95.tar.gz 2iv35-8dc29e0202fb48c078aebf271b31e903a1076d95.tar.bz2 |
more normal drawing
Diffstat (limited to 'Smoke/renderer_gl.c')
-rw-r--r-- | Smoke/renderer_gl.c | 74 |
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(); } |