Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
May 22, 2006, 11:23:00 AM (18 years ago)
Author:
amaechler
Message:

branches/atmospheric_engine: volfog hacking

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/atmospheric_engine/src/lib/graphics/effects/volfog_effect.cc

    r7652 r7759  
    1919
    2020#include "glincl.h"
    21 #include "shell_command.h"
     21//#include "shell_command.h"
     22
     23#define GLX_GLXEXT_PROTOTYPES
     24#include <GL/glx.h>
     25
     26//#include <GL/glext.h> //OpenGL Extensions
     27//#include <GL/glxext.h> // GLX Extensions
     28
     29#ifndef GL_EXT_fog_coord
     30#define GL_EXT_fog_coord 1
     31
     32typedef void (APIENTRY * PFNGLFOGCOORDFEXTPROC) (GLfloat coord);
     33typedef void (APIENTRY * PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord);
     34typedef void (APIENTRY * PFNGLFOGCOORDDEXTPROC) (GLdouble coord);
     35typedef void (APIENTRY * PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord);
     36typedef void (APIENTRY * PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
     37#endif
     38
     39PFNGLFOGCOORDFEXTPROC glFogCoordfEXT = 0;
     40PFNGLFOGCOORDFVEXTPROC glFogCoordfvEXT = 0;
     41PFNGLFOGCOORDDEXTPROC glFogCoorddEXT = 0;
     42PFNGLFOGCOORDDVEXTPROC glFogCoorddvEXT = 0;
     43PFNGLFOGCOORDPOINTEREXTPROC glFogCoordPointerEXT = 0;
     44
    2245
    2346using namespace std;
     
    5376{
    5477        PRINTF(0)("Initalize VolFogEffect\n");
     78
     79        // set fog mode
     80        GLenum fogMode  = GL_EXP2;
     81
     82        // set fog density
     83        float  fogDensity  = 0.03f;
     84
     85        // set fog near & far distance
     86        float fogStart = 0.05f;
     87        float fogEnd   = 100.0f;
     88
     89        // Set fog color
     90        float fogColor[4] = {0.0, 1.0, 0.0, 1.0};
    5591       
     92        glClearColor(fogColor[0],fogColor[1],fogColor[2],0.0f);
     93        glShadeModel(GL_SMOOTH);
     94        glEnable(GL_DEPTH_TEST);
     95        glEnable(GL_CULL_FACE);
     96        glCullFace(GL_BACK);
     97
     98        glFogCoordfEXT       = (PFNGLFOGCOORDFEXTPROC)glXGetProcAddressARB((const GLubyte*)"glFogCoordfEXT");
     99        glFogCoordfvEXT      = (PFNGLFOGCOORDFVEXTPROC)glXGetProcAddressARB((const GLubyte*)"glFogCoordfvEXT");
     100        glFogCoorddEXT       = (PFNGLFOGCOORDDEXTPROC)glXGetProcAddressARB((const GLubyte*)"glFogCoorddEXT");
     101        glFogCoorddvEXT      = (PFNGLFOGCOORDDVEXTPROC)glXGetProcAddressARB((const GLubyte*)"glFogCoorddvEXT");
     102        glFogCoordPointerEXT = (PFNGLFOGCOORDPOINTEREXTPROC)glXGetProcAddressARB((const GLubyte*)"glFogCoordPointerEXT");
     103
     104        // set the fog attributes
     105        glFogf (GL_FOG_START,  fogStart);
     106        glFogf (GL_FOG_END,    fogEnd);
     107        glFogfv(GL_FOG_COLOR,  fogColor);     
     108        glFogi (GL_FOG_MODE,   fogMode);
     109        glFogf (GL_FOG_DENSITY,fogDensity);
     110        glFogi (GL_FOG_COORDINATE_SOURCE_EXT,GL_FOG_COORDINATE_EXT);
     111
     112        // enable the fog
     113        glEnable(GL_FOG);
     114
    56115        if (glewInit() == GLEW_OK)
    57116                PRINTF(0)("glewInit OK\n");
    58117        else
    59118                PRINTF(0)("glewInit failed\n");
    60 
    61         // Set fog color
    62         float fogColor[4] = {0.0, 1.0, 0.0, 1.0};
    63 
    64         /* set up fog params */
    65         glEnable(GL_FOG);                                               // Enable Fog
    66         glFogi(GL_FOG_MODE, GL_LINEAR);                         // Fog Fade Is Linear
    67         glFogfv(GL_FOG_COLOR, fogColor);                                // Set The Fog Color
    68         glFogf(GL_FOG_START, 0.0f);                                     // Set The Fog Start
    69         glFogf(GL_FOG_END, 1.0f);                                       // Set The Fog End
    70         glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FOG_COORDINATE_EXT);    // Set The Fog based on vertice coordinates
    71         // glHint(GL_FOG_HINT, GL_NICEST);                              // Per-Pixel Fog Calculation
    72 
    73         // glClearColor(0.0, 0.0, 0.0, 1.0);  //sets bg color?!
    74 
    75         /* enable texturing & set texturing function */
    76         // glEnable(GL_TEXTURE_2D);
    77         // glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
    78119
    79120        if (glewGetExtension("GL_EXT_fog_coord"))
     
    106147void VolFogEffect::draw() const
    107148{
    108         //glPushAttrib(GL_ENABLE_BIT);
    109149       
    110150        /* clear all pixels in colour buffer */
     
    115155        //glBlendFunc(GL_SRC_ALPHA, GL_DST_ALPHA);
    116156
    117         //glLoadIdentity ();    // Reset The Modelview Matrix
    118 
    119         // glBindTexture(GL_TEXTURE_2D, 0);
    120157        /* draw the panels */
    121158        glBegin(GL_QUADS); // Floor
     
    164201        glFlush();
    165202
    166         // glPopAttrib();
    167203}
    168204
Note: See TracChangeset for help on using the changeset viewer.