diff options
author | Wilrik de Loose <wilrik@wilrik.nl> | 2008-01-09 16:27:09 (GMT) |
---|---|---|
committer | Wilrik de Loose <wilrik@wilrik.nl> | 2008-01-09 16:27:09 (GMT) |
commit | 30a4b86ec59e27d1b033f4505447d32792a06500 (patch) | |
tree | 1d63a6936ed1b9fde4c0304bf57695964fdac158 | |
parent | 4b45e834c8a243d299f7b09960dc43db58cb7910 (diff) | |
download | 2iv35-30a4b86ec59e27d1b033f4505447d32792a06500.zip 2iv35-30a4b86ec59e27d1b033f4505447d32792a06500.tar.gz 2iv35-30a4b86ec59e27d1b033f4505447d32792a06500.tar.bz2 |
lalal ilili
-rw-r--r-- | Smoke/Week 2.suo | bin | 76288 -> 76288 bytes | |||
-rw-r--r-- | Smoke/fluids.h | 6 | ||||
-rw-r--r-- | Smoke/glyphs.c | 18 | ||||
-rw-r--r-- | Smoke/glyphs.h | 8 | ||||
-rw-r--r-- | Smoke/renderer_gl.c | 90 |
5 files changed, 73 insertions, 49 deletions
diff --git a/Smoke/Week 2.suo b/Smoke/Week 2.suo Binary files differindex 55c5b7c..b1405cf 100644 --- a/Smoke/Week 2.suo +++ b/Smoke/Week 2.suo diff --git a/Smoke/fluids.h b/Smoke/fluids.h index 555614e..bbb8112 100644 --- a/Smoke/fluids.h +++ b/Smoke/fluids.h @@ -29,12 +29,6 @@ extern int frame_index; #define VECTOR_VEL 0 #define VECTOR_FORCE 1 -#define GLYPH_LINES 0 -#define GLYPH_TRIANGLES 1 -#define GLYPH_CONES 2 -#define GLYPH_ARROWS 3 -#define GLYPH_QUAKE 4 - #define HISTORY_SIZE 40 extern int winWidth, winHeight; //size of the graphics window, in pixels diff --git a/Smoke/glyphs.c b/Smoke/glyphs.c index 7c46eb0..956bbc1 100644 --- a/Smoke/glyphs.c +++ b/Smoke/glyphs.c @@ -3,6 +3,7 @@ #include <windows.h>
#endif
+#include <GL/gl.h>
#include <rfftw.h>
#include "funcs.h"
@@ -14,11 +15,11 @@ static int glyphs_render = FALSE;
static int glyphs_num_colors = PALETTE_MAXCOLORS;
static int glyphs_colormap = PALETTE_BLACKWHITE;
-static int glyphs_sort = GLYPH_ARROWS;
+static int glyphs_sort = GLYPH_LINES;
static int glyphs_dataset_color = DATASET_RHO;
static int glyphs_dataset_direction = DATASET_RHO;
-static float glyphs_alpha = 0.5f;
+static float glyphs_alpha = 1.0f;
static fftw_real *glyphs_frame;
@@ -85,6 +86,19 @@ int glyphs_get_dataset_direction(void) void glyphs_set_sort(int sort)
{
glyphs_sort = sort;
+
+ switch (glyphs_sort)
+ {
+ case GLYPH_ARROWS:
+ load_textures("arrow.bmp");
+
+ case GLYPH_QUAKE:
+ load_textures("quake.bmp");
+ break;
+
+ default:
+ break;
+ }
}
int glyphs_get_sort(void)
diff --git a/Smoke/glyphs.h b/Smoke/glyphs.h index 3bcc9d3..200d603 100644 --- a/Smoke/glyphs.h +++ b/Smoke/glyphs.h @@ -1,5 +1,11 @@ #ifndef _GLYPHS_H
-#define _GLYPHS_H
+#define _GLYPHS_H + +#define GLYPH_LINES 0 +#define GLYPH_TRIANGLES 1 +#define GLYPH_CONES 2 +#define GLYPH_ARROWS 3 +#define GLYPH_QUAKE 4
void glyphs_set_render(int render_glyphs);
int glyphs_get_render(void);
diff --git a/Smoke/renderer_gl.c b/Smoke/renderer_gl.c index 96b9faa..fb27516 100644 --- a/Smoke/renderer_gl.c +++ b/Smoke/renderer_gl.c @@ -316,6 +316,8 @@ void render_smoke(void) DIM = fluids_get_dim(); + glDisable(GL_BLEND); + wn = (fftw_real)winWidth / (fftw_real)(DIM + 1); // Grid cell width hn = (fftw_real)winHeight / (fftw_real)(DIM + 1); // Grid cell height @@ -370,6 +372,8 @@ void render_smoke(void) glVertex3f(px, py, pz); glEnd(); } + + glEnable(GL_BLEND); } @@ -796,32 +800,34 @@ static void render_flowvis(void) void renderer_init_gl(void) { - float LightAmbient[] = { 0.10f, 0.10f, 0.10f, 1.0f }; // Ambient light values - float LightDiffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f }; // Diffuse light values - float LightPosition[] = { -250.0f, -250.0f, -300.0f, 1.00f }; // Position of the light source + float LightAmbient[] = { 0.10f, 0.10f, 0.10f, 1.0f }; // Ambient light values + float LightDiffuse[] = { 0.80f, 0.80f, 0.80f, 1.0f }; // Diffuse light values + float LightPosition[] = { x_pos, y_pos, -500, 1.0f }; // Position of the light source - //glEnable(GL_TEXTURE_2D); - glShadeModel(GL_SMOOTH); glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); glHint(GL_POINT_SMOOTH_HINT, GL_NICEST); + // blending glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE); + // depth testing glEnable(GL_DEPTH_TEST); glClearDepth(1.0f); glDepthFunc(GL_LESS); + // lighting + glShadeModel(GL_SMOOTH); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glEnable(GL_COLOR_MATERIAL); + glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 9.8f); + glLightfv(GL_LIGHT0, GL_AMBIENT, LightAmbient); glLightfv(GL_LIGHT0, GL_DIFFUSE, LightDiffuse); glLightfv(GL_LIGHT0, GL_POSITION, LightPosition); - - texture = load_textures(BITMAP_SOURCE); } @@ -891,49 +897,53 @@ void visualize(struct vis_data_arrays *vis_data) { // Rotate field - glLoadIdentity(); - glTranslatef(x_pos, y_pos, z_pos); - glRotatef(x_rot, 1.0f, 0.0f, 0.0f); - glRotatef(y_rot, 0.0f, 1.0f, 0.0f); - glRotatef(z_rot, 0.0f, 0.0f, 1.0f); + glPushMatrix(); + + glLoadIdentity(); + glTranslatef(x_pos, y_pos, z_pos); + glRotatef(x_rot, 1.0f, 0.0f, 0.0f); + glRotatef(y_rot, 0.0f, 1.0f, 0.0f); + glRotatef(z_rot, 0.0f, 0.0f, 1.0f); - glTranslatef(-winWidth/2, -winHeight/2, 0.0f); + glTranslatef(-winWidth/2, -winHeight/2, 0.0f); - if (renderer_render_grid) { - render_grid(); - } + if (renderer_render_grid) { + render_grid(); + } - if (isolines_get_render()) { - render_isolines(); - } + if (isolines_get_render()) { + render_isolines(); + } - if (smoke_get_render()) { - render_smoke(); - } + if (smoke_get_render()) { + render_smoke(); + } - if (glyphs_get_render()) { - render_glyphs(); - } + if (glyphs_get_render()) { + render_glyphs(); + } - render_seedpoints(); + render_seedpoints(); - if (streamlines_get_render()) { - render_streamlines(); - } + if (streamlines_get_render()) { + render_streamlines(); + } - if (flowvis_get_render()) { - render_flowvis(); - } + if (flowvis_get_render()) { + render_flowvis(); + } - if (normals_get_render()) { - render_normal(); - } + if (normals_get_render()) { + render_normal(); + } - if (normals_get_render2()) { - render_normals(); - } + if (normals_get_render2()) { + render_normals(); + } + + render_streamlines(); - render_streamlines(); + render_legend(); - render_legend(); + glPopMatrix(); } |