Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Jun 15, 2006, 9:50:56 PM (19 years ago)
Author:
bensch
Message:

merged the branche atmos back. no conflicts

File:
1 edited

Legend:

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

    r8362 r8495  
    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
     
    2121#include "state.h"
    2222
     23#include "glincl.h"
     24//#include "shell_command.h"
    2325
    2426#define GLX_GLXEXT_PROTOTYPES
     
    4951CREATE_FACTORY(VolFogEffect, CL_VOLFOG_EFFECT);
    5052
    51 VolFogEffect::VolFogEffect(const TiXmlElement* root)
    52 {
    53         this->setClassID(CL_VOLFOG_EFFECT, "VolFogEffect");
     53VolFogEffect::VolFogEffect(const TiXmlElement* root) {
     54    this->setClassID(CL_VOLFOG_EFFECT, "VolFogEffect");
    5455
    55         if (root != NULL)
    56                 this->loadParams(root);
     56    if (root != NULL)
     57        this->loadParams(root);
    5758
    58         // Initialize Effect
    59         this->init();
     59    // Initialize Effect
     60    this->init();
    6061
    61         // Activate Effect
    62         this->activate();
     62    // Activate Effect
     63    this->activate();
    6364}
    6465
    6566
    66 VolFogEffect::~VolFogEffect()
    67 {
    68         this->deactivate();
     67VolFogEffect::~VolFogEffect() {
     68    this->deactivate();
    6969}
    7070
    71 void VolFogEffect::loadParams(const TiXmlElement* root)
    72 {
    73         WeatherEffect::loadParams(root);
     71void VolFogEffect::loadParams(const TiXmlElement* root) {
     72    WeatherEffect::loadParams(root);
    7473}
    7574
    76 bool VolFogEffect::init()
    77 {
    78         PRINTF(0)("Initalize VolFogEffect\n");
     75void VolFogEffect::init() {
     76    PRINTF(0)("Initalize VolFogEffect\n");
    7977
    80         // set fog mode
    81         GLenum fogMode  = GL_EXP;
     78    // set fog mode
     79    GLenum fogMode  = GL_EXP;
    8280
    83         // set fog density
    84         float  fogDensity  = 0.001f;
     81    // set fog density
     82    float  fogDensity  = 0.001f;
    8583
    86         // set fog near & far distance
    87         float fogStart = 0.0f;
    88         float fogEnd   = 1000.0f;
     84    // set fog near & far distance
     85    float fogStart = 0.0f;
     86    float fogEnd   = 1000.0f;
    8987
    90         // Set fog color
    91         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};
    9290
    9391
    94         glFogCoordfEXT       = (PFNGLFOGCOORDFEXTPROC)glXGetProcAddressARB((const GLubyte*)"glFogCoordfEXT");
    95         glFogCoordfvEXT      = (PFNGLFOGCOORDFVEXTPROC)glXGetProcAddressARB((const GLubyte*)"glFogCoordfvEXT");
    96         glFogCoorddEXT       = (PFNGLFOGCOORDDEXTPROC)glXGetProcAddressARB((const GLubyte*)"glFogCoorddEXT");
    97         glFogCoorddvEXT      = (PFNGLFOGCOORDDVEXTPROC)glXGetProcAddressARB((const GLubyte*)"glFogCoorddvEXT");
    98         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");
    9997
    100         // set the fog attributes
    101         glFogf (GL_FOG_START,  fogStart);
    102         glFogf (GL_FOG_END,    fogEnd);
    103         glFogfv(GL_FOG_COLOR,  fogColor);
    104         glFogi (GL_FOG_MODE,   fogMode);
    105         glFogf (GL_FOG_DENSITY,fogDensity);
    106         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);
    107105
    108         // enable the fog
    109         glEnable(GL_FOG);
     106    // enable the fog
     107    glEnable(GL_FOG);
    110108
    111         if (glewInit() == GLEW_OK)
    112                 PRINTF(0)("glewInit OK\n");
    113         else
    114                 PRINTF(0)("glewInit failed\n");
     109    if (glewInit() == GLEW_OK)
     110        PRINTF(0)("glewInit OK\n");
     111    else
     112        PRINTF(0)("glewInit failed\n");
    115113
    116         if (glewGetExtension("GL_EXT_fog_coord"))
    117         {
    118                 PRINTF(0)("GL_EXT_fog_coord extension found\n");
    119                 return true;
    120         }
    121         else
    122         {
    123                 PRINTF(0)("GL_EXT_fog_coord extension NOT found\n");
    124                 return false;
    125         }
     114    if (glewGetExtension("GL_EXT_fog_coord"))
     115        PRINTF(0)("GL_EXT_fog_coord extension found\n");
    126116}
    127117
    128118
    129 bool VolFogEffect::activate()
    130 {
    131         PRINTF(0)("Activating VolFogEffect\n");
    132 
    133         return true;
     119void VolFogEffect::activate() {
     120    PRINTF(0)("Activating VolFogEffect\n");
    134121}
    135122
    136 bool VolFogEffect::deactivate()
    137 {
    138         PRINTF(0)("Deactivating VolFogEffect\n");
     123void VolFogEffect::deactivate() {
     124    PRINTF(0)("Deactivating VolFogEffect\n");
    139125
    140         glDisable(GL_FOG);
    141 
    142         return true;
     126    glDisable(GL_FOG);
    143127}
    144128
     
    147131* draws the effect, if needed
    148132*/
    149 void VolFogEffect::draw() const
    150 {
    151   glPushAttrib(GL_ENABLE_BIT);
    152   glClearColor(fogColor[0],fogColor[1],fogColor[2],0.0f);
    153         glShadeModel(GL_SMOOTH);
    154         glEnable(GL_DEPTH_TEST);
    155         glEnable(GL_CULL_FACE);
    156         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);
    157140
    158         /* clear all pixels in colour buffer */
    159         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);
    160143
    161         /* Enable blending */
    162         //glEnable(GL_BLEND);
    163         //glBlendFunc(GL_SRC_ALPHA, GL_DST_ALPHA);
     144    /* Enable blending */
     145    //glEnable(GL_BLEND);
     146    //glBlendFunc(GL_SRC_ALPHA, GL_DST_ALPHA);
    164147
    165         int i;
    166         glLoadIdentity();
     148    int i;
     149    glLoadIdentity();
    167150
    168151
    169         glBegin( GL_LINES );
    170                 glNormal3f(0,1,0);
    171                 for(i=-20;i<=20;i+=2)
    172                 {
    173                         float fog_c;
    174                         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];
    175157
    176                         diff[0] = State::getCameraNode()->getAbsCoor().x - i;
    177                         diff[2] = State::getCameraNode()->getAbsCoor().z + 20;
    178                         diff[1] = State::getCameraNode()->getAbsCoor().y;
    179                         fog_c = 1.3f*sqrt(diff[0]*diff[0]+diff[1]*diff[1]+diff[2]*diff[2]);
    180                         glFogCoordfEXT(fog_c*2);
    181                         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);
    182164
    183                         diff[0] = State::getCameraNode()->getAbsCoor().x - i;
    184                         diff[2] = State::getCameraNode()->getAbsCoor().z + 20;
    185                         diff[1] = State::getCameraNode()->getAbsCoor().y;
    186                         fog_c = 1.3f*sqrt(diff[0]*diff[0]+diff[1]*diff[1]+diff[2]*diff[2]);
    187                         glFogCoordfEXT(fog_c*2);
    188                         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);
    189171
    190                         diff[0] = State::getCameraNode()->getAbsCoor().x - i;
    191                         diff[2] = State::getCameraNode()->getAbsCoor().z + 20;
    192                         diff[1] = State::getCameraNode()->getAbsCoor().y;
    193                         fog_c = 1.3f*sqrt(diff[0]*diff[0]+diff[1]*diff[1]+diff[2]*diff[2]);
    194                         glFogCoordfEXT(fog_c*2);
    195                         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);
    196178
    197                         diff[0] = State::getCameraNode()->getAbsCoor().x - i;
    198                         diff[2] = State::getCameraNode()->getAbsCoor().z + 20;
    199                         diff[1] = State::getCameraNode()->getAbsCoor().y;
    200                         fog_c = 1.3f*sqrt(diff[0]*diff[0]+diff[1]*diff[1]+diff[2]*diff[2]);
    201                         glFogCoordfEXT(fog_c*2);
    202                         glVertex3f(20,0,i);
    203                 }
    204         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();
    205187
    206   glPopAttrib();
     188    glPopAttrib();
    207189
    208190}
     
    212194* ticks the effect if there is any time dependancy
    213195*/
    214 void VolFogEffect::tick(float dt)
    215 {
    216 }
     196void VolFogEffect::tick(float dt) {}
Note: See TracChangeset for help on using the changeset viewer.