summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilrik de Loose <wilrik@wilrik.nl>2008-01-09 16:27:09 (GMT)
committerWilrik de Loose <wilrik@wilrik.nl>2008-01-09 16:27:09 (GMT)
commit30a4b86ec59e27d1b033f4505447d32792a06500 (patch)
tree1d63a6936ed1b9fde4c0304bf57695964fdac158
parent4b45e834c8a243d299f7b09960dc43db58cb7910 (diff)
download2iv35-30a4b86ec59e27d1b033f4505447d32792a06500.zip
2iv35-30a4b86ec59e27d1b033f4505447d32792a06500.tar.gz
2iv35-30a4b86ec59e27d1b033f4505447d32792a06500.tar.bz2
lalal ilili
-rw-r--r--Smoke/Week 2.suobin76288 -> 76288 bytes
-rw-r--r--Smoke/fluids.h6
-rw-r--r--Smoke/glyphs.c18
-rw-r--r--Smoke/glyphs.h8
-rw-r--r--Smoke/renderer_gl.c90
5 files changed, 73 insertions, 49 deletions
diff --git a/Smoke/Week 2.suo b/Smoke/Week 2.suo
index 55c5b7c..b1405cf 100644
--- a/Smoke/Week 2.suo
+++ b/Smoke/Week 2.suo
Binary files differ
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();
}