Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Jun 15, 2006, 1:43:24 PM (19 years ago)
Author:
amaechler
Message:

atmospheric: void etc bugfixes

File:
1 edited

Legend:

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

    r8455 r8457  
    11/*
    2         orxonox - the future of 3D-vertical-scrollers
     2  orxonox - the future of 3D-vertical-scrollers
    33
    4         Copyright (C) 2004 orx
     4  Copyright (C) 2004 orx
    55
    6         This program is free software; you can redistribute it and/or modify
    7         it under the terms of the GNU General Public License as published by
    8         the Free Software Foundation; either version 2, or (at your option)
    9         any later version.
     6  This program is free software; you can redistribute it and/or modify
     7  it under the terms of the GNU General Public License as published by
     8  the Free Software Foundation; either version 2, or (at your option)
     9  any later version.
    1010
    1111### File Specific:
    12         main-programmer: hdavid, amaechler
     12  main-programmer: hdavid, amaechler
    1313*/
    1414
     
    5151CREATE_FACTORY(VolFogEffect, CL_VOLFOG_EFFECT);
    5252
    53 VolFogEffect::VolFogEffect(const TiXmlElement* root)
    54 {
    55         this->setClassID(CL_VOLFOG_EFFECT, "VolFogEffect");
     53VolFogEffect::VolFogEffect(const TiXmlElement* root) {
     54    this->setClassID(CL_VOLFOG_EFFECT, "VolFogEffect");
    5655
    57         if (root != NULL)
    58                 this->loadParams(root);
     56    if (root != NULL)
     57        this->loadParams(root);
    5958
    60         // Initialize Effect
    61         this->init();
     59    // Initialize Effect
     60    this->init();
    6261
    63         // Activate Effect
    64         this->activate();
     62    // Activate Effect
     63    this->activate();
    6564}
    6665
    6766
    68 VolFogEffect::~VolFogEffect()
    69 {
    70         this->deactivate();
     67VolFogEffect::~VolFogEffect() {
     68    this->deactivate();
    7169}
    7270
    73 void VolFogEffect::loadParams(const TiXmlElement* root)
    74 {
    75         WeatherEffect::loadParams(root);
     71void VolFogEffect::loadParams(const TiXmlElement* root) {
     72    WeatherEffect::loadParams(root);
    7673}
    7774
    78 void VolFogEffect::init()
    79 {
    80         PRINTF(0)("Initalize VolFogEffect\n");
     75void VolFogEffect::init() {
     76    PRINTF(0)("Initalize VolFogEffect\n");
    8177
    82         // set fog mode
    83         GLenum fogMode  = GL_EXP;
     78    // set fog mode
     79    GLenum fogMode  = GL_EXP;
    8480
    85         // set fog density
    86         float  fogDensity  = 0.001f;
     81    // set fog density
     82    float  fogDensity  = 0.001f;
    8783
    88         // set fog near & far distance
    89         float fogStart = 0.0f;
    90         float fogEnd   = 1000.0f;
     84    // set fog near & far distance
     85    float fogStart = 0.0f;
     86    float fogEnd   = 1000.0f;
    9187
    92         // Set fog color
    93         float fogColor[4] = {0.6f,0.58f,0.79f,0.0f};
     88    // Set fog color
     89    float fogColor[4] = {0.6f,0.58f,0.79f,0.0f};
    9490
    9591
    96         glFogCoordfEXT       = (PFNGLFOGCOORDFEXTPROC)glXGetProcAddressARB((const GLubyte*)"glFogCoordfEXT");
    97         glFogCoordfvEXT      = (PFNGLFOGCOORDFVEXTPROC)glXGetProcAddressARB((const GLubyte*)"glFogCoordfvEXT");
    98         glFogCoorddEXT       = (PFNGLFOGCOORDDEXTPROC)glXGetProcAddressARB((const GLubyte*)"glFogCoorddEXT");
    99         glFogCoorddvEXT      = (PFNGLFOGCOORDDVEXTPROC)glXGetProcAddressARB((const GLubyte*)"glFogCoorddvEXT");
    100         glFogCoordPointerEXT = (PFNGLFOGCOORDPOINTEREXTPROC)glXGetProcAddressARB((const GLubyte*)"glFogCoordPointerEXT");
     92    glFogCoordfEXT       = (PFNGLFOGCOORDFEXTPROC)glXGetProcAddressARB((const GLubyte*)"glFogCoordfEXT");
     93    glFogCoordfvEXT      = (PFNGLFOGCOORDFVEXTPROC)glXGetProcAddressARB((const GLubyte*)"glFogCoordfvEXT");
     94    glFogCoorddEXT       = (PFNGLFOGCOORDDEXTPROC)glXGetProcAddressARB((const GLubyte*)"glFogCoorddEXT");
     95    glFogCoorddvEXT      = (PFNGLFOGCOORDDVEXTPROC)glXGetProcAddressARB((const GLubyte*)"glFogCoorddvEXT");
     96    glFogCoordPointerEXT = (PFNGLFOGCOORDPOINTEREXTPROC)glXGetProcAddressARB((const GLubyte*)"glFogCoordPointerEXT");
    10197
    102         // set the fog attributes
    103         glFogf (GL_FOG_START,  fogStart);
    104         glFogf (GL_FOG_END,    fogEnd);
    105         glFogfv(GL_FOG_COLOR,  fogColor);
    106         glFogi (GL_FOG_MODE,   fogMode);
    107         glFogf (GL_FOG_DENSITY,fogDensity);
    108         glFogi (GL_FOG_COORDINATE_SOURCE_EXT,GL_FOG_COORDINATE_EXT);
     98    // set the fog attributes
     99    glFogf (GL_FOG_START,  fogStart);
     100    glFogf (GL_FOG_END,    fogEnd);
     101    glFogfv(GL_FOG_COLOR,  fogColor);
     102    glFogi (GL_FOG_MODE,   fogMode);
     103    glFogf (GL_FOG_DENSITY,fogDensity);
     104    glFogi (GL_FOG_COORDINATE_SOURCE_EXT,GL_FOG_COORDINATE_EXT);
    109105
    110         // enable the fog
    111         glEnable(GL_FOG);
     106    // enable the fog
     107    glEnable(GL_FOG);
    112108
    113         if (glewInit() == GLEW_OK)
    114                 PRINTF(0)("glewInit OK\n");
    115         else
    116                 PRINTF(0)("glewInit failed\n");
     109    if (glewInit() == GLEW_OK)
     110        PRINTF(0)("glewInit OK\n");
     111    else
     112        PRINTF(0)("glewInit failed\n");
    117113
    118         if (glewGetExtension("GL_EXT_fog_coord"))
    119                 PRINTF(0)("GL_EXT_fog_coord extension found\n");
     114    if (glewGetExtension("GL_EXT_fog_coord"))
     115        PRINTF(0)("GL_EXT_fog_coord extension found\n");
    120116}
    121117
    122118
    123 void VolFogEffect::activate()
    124 {
    125         PRINTF(0)("Activating VolFogEffect\n");
     119void VolFogEffect::activate() {
     120    PRINTF(0)("Activating VolFogEffect\n");
    126121}
    127122
    128 void VolFogEffect::deactivate()
    129 {
    130         PRINTF(0)("Deactivating VolFogEffect\n");
     123void VolFogEffect::deactivate() {
     124    PRINTF(0)("Deactivating VolFogEffect\n");
    131125
    132         glDisable(GL_FOG);
     126    glDisable(GL_FOG);
    133127}
    134128
     
    137131* draws the effect, if needed
    138132*/
    139 void VolFogEffect::draw() const
    140 {
    141   glPushAttrib(GL_ENABLE_BIT);
    142   glClearColor(fogColor[0],fogColor[1],fogColor[2],0.0f);
    143         glShadeModel(GL_SMOOTH);
    144         glEnable(GL_DEPTH_TEST);
    145         glEnable(GL_CULL_FACE);
    146         glCullFace(GL_BACK);
     133void VolFogEffect::draw() const {
     134    glPushAttrib(GL_ENABLE_BIT);
     135    glClearColor(fogColor[0],fogColor[1],fogColor[2],0.0f);
     136    glShadeModel(GL_SMOOTH);
     137    glEnable(GL_DEPTH_TEST);
     138    glEnable(GL_CULL_FACE);
     139    glCullFace(GL_BACK);
    147140
    148         /* clear all pixels in colour buffer */
    149         glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
     141    /* clear all pixels in colour buffer */
     142    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    150143
    151         /* Enable blending */
    152         //glEnable(GL_BLEND);
    153         //glBlendFunc(GL_SRC_ALPHA, GL_DST_ALPHA);
     144    /* Enable blending */
     145    //glEnable(GL_BLEND);
     146    //glBlendFunc(GL_SRC_ALPHA, GL_DST_ALPHA);
    154147
    155         int i;
    156         glLoadIdentity();
     148    int i;
     149    glLoadIdentity();
    157150
    158151
    159         glBegin( GL_LINES );
    160                 glNormal3f(0,1,0);
    161                 for(i=-20;i<=20;i+=2)
    162                 {
    163                         float fog_c;
    164                         float diff[3];
     152    glBegin( GL_LINES );
     153    glNormal3f(0,1,0);
     154    for(i=-20;i<=20;i+=2) {
     155        float fog_c;
     156        float diff[3];
    165157
    166                         diff[0] = State::getCameraNode()->getAbsCoor().x - i;
    167                         diff[2] = State::getCameraNode()->getAbsCoor().z + 20;
    168                         diff[1] = State::getCameraNode()->getAbsCoor().y;
    169                         fog_c = 1.3f*sqrt(diff[0]*diff[0]+diff[1]*diff[1]+diff[2]*diff[2]);
    170                         glFogCoordfEXT(fog_c*2);
    171                         glVertex3f(i,0,-20);
     158        diff[0] = State::getCameraNode()->getAbsCoor().x - i;
     159        diff[2] = State::getCameraNode()->getAbsCoor().z + 20;
     160        diff[1] = State::getCameraNode()->getAbsCoor().y;
     161        fog_c = 1.3f*sqrt(diff[0]*diff[0]+diff[1]*diff[1]+diff[2]*diff[2]);
     162        glFogCoordfEXT(fog_c*2);
     163        glVertex3f(i,0,-20);
    172164
    173                         diff[0] = State::getCameraNode()->getAbsCoor().x - i;
    174                         diff[2] = State::getCameraNode()->getAbsCoor().z + 20;
    175                         diff[1] = State::getCameraNode()->getAbsCoor().y;
    176                         fog_c = 1.3f*sqrt(diff[0]*diff[0]+diff[1]*diff[1]+diff[2]*diff[2]);
    177                         glFogCoordfEXT(fog_c*2);
    178                         glVertex3f(i,0,20);
     165        diff[0] = State::getCameraNode()->getAbsCoor().x - i;
     166        diff[2] = State::getCameraNode()->getAbsCoor().z + 20;
     167        diff[1] = State::getCameraNode()->getAbsCoor().y;
     168        fog_c = 1.3f*sqrt(diff[0]*diff[0]+diff[1]*diff[1]+diff[2]*diff[2]);
     169        glFogCoordfEXT(fog_c*2);
     170        glVertex3f(i,0,20);
    179171
    180                         diff[0] = State::getCameraNode()->getAbsCoor().x - i;
    181                         diff[2] = State::getCameraNode()->getAbsCoor().z + 20;
    182                         diff[1] = State::getCameraNode()->getAbsCoor().y;
    183                         fog_c = 1.3f*sqrt(diff[0]*diff[0]+diff[1]*diff[1]+diff[2]*diff[2]);
    184                         glFogCoordfEXT(fog_c*2);
    185                         glVertex3f(-20,0,i);
     172        diff[0] = State::getCameraNode()->getAbsCoor().x - i;
     173        diff[2] = State::getCameraNode()->getAbsCoor().z + 20;
     174        diff[1] = State::getCameraNode()->getAbsCoor().y;
     175        fog_c = 1.3f*sqrt(diff[0]*diff[0]+diff[1]*diff[1]+diff[2]*diff[2]);
     176        glFogCoordfEXT(fog_c*2);
     177        glVertex3f(-20,0,i);
    186178
    187                         diff[0] = State::getCameraNode()->getAbsCoor().x - i;
    188                         diff[2] = State::getCameraNode()->getAbsCoor().z + 20;
    189                         diff[1] = State::getCameraNode()->getAbsCoor().y;
    190                         fog_c = 1.3f*sqrt(diff[0]*diff[0]+diff[1]*diff[1]+diff[2]*diff[2]);
    191                         glFogCoordfEXT(fog_c*2);
    192                         glVertex3f(20,0,i);
    193                 }
    194         glEnd();
     179        diff[0] = State::getCameraNode()->getAbsCoor().x - i;
     180        diff[2] = State::getCameraNode()->getAbsCoor().z + 20;
     181        diff[1] = State::getCameraNode()->getAbsCoor().y;
     182        fog_c = 1.3f*sqrt(diff[0]*diff[0]+diff[1]*diff[1]+diff[2]*diff[2]);
     183        glFogCoordfEXT(fog_c*2);
     184        glVertex3f(20,0,i);
     185    }
     186    glEnd();
    195187
    196   glPopAttrib();
     188    glPopAttrib();
    197189
    198190}
     
    202194* ticks the effect if there is any time dependancy
    203195*/
    204 void VolFogEffect::tick(float dt)
    205 {
    206 }
     196void VolFogEffect::tick(float dt) {}
Note: See TracChangeset for help on using the changeset viewer.