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.c90
1 files changed, 50 insertions, 40 deletions
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();
}