Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 3839 in orxonox.OLD


Ignore:
Timestamp:
Apr 15, 2005, 6:59:34 PM (19 years ago)
Author:
dave
Message:

Hab wieder mal nichts kapiert, aber beim Schatten hat sich trotzdem viel getan:)

Location:
orxonox/branches/shadows/src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • orxonox/branches/shadows/src/orxonox.cc

    r3728 r3839  
    133133
    134134  int bpp = 16;
    135   int width = 400;
    136   int height = 300;
     135  int width = 1024;
     136  int height = 768;
    137137  //Uint32 flags = SDL_HWSURFACE | SDL_OPENGL | SDL_GL_DOUBLEBUFFER; /* \todo: SDL_OPENGL doen't permit to load images*/
    138138  //Uint32 flags = SDL_HWSURFACE | SDL_GL_DOUBLEBUFFER;
  • orxonox/branches/shadows/src/shadow.cc

    r3760 r3839  
    5656}
    5757
    58 void Shadow::init()
     58void Shadow::init(GLuint ground_id_imported)
    5959{
    6060   
     
    6363    float plane_r[] ={0.0f,0.0f,1.0f,0.0f};
    6464    float plane_q[] ={0.0f,0.0f,0.0f,1.0f};
     65   
     66   
     67    this->mat=new Material("Ground");
     68    this->mat->setDiffuseMap("../data/pictures/ground.tga");
     69    this->mat->setIllum(3);
    6570   
    6671    glClearDepth(1);
     
    9196   
    9297    this->image=(unsigned char*)malloc(SIZE*SIZE*4);
    93    
    94 
    95 }
    96 void Shadow::createGroundList(){
    97      this->ground_id=glGenLists(1);
    98      glNewList(this->ground_id,GL_COMPILE);
    99    
    100      setGround();
    101    
    102      glEndList();
    103 
    104 }
     98    this->ground_id=ground_id_imported;
     99
     100}
     101
    105102
    106103void Shadow::createShadow()
     
    111108    glBindTexture(GL_TEXTURE_2D,this->shadow_id);
    112109   
    113     glClearColor(1,1,1,1);
    114     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    115     glMatrixMode(GL_PROJECTION);
    116     glLoadIdentity();
    117     glOrtho(-4.2,4.2,-4.2,4.2,-100,100);
    118     glMatrixMode(GL_MODELVIEW);
    119     glLoadIdentity();
    120    
     110   
    121111    gluLookAt(this->lightPos[0],this->lightPos[1],this->lightPos[2],this->playerPos[0],this->playerPos[1],this->playerPos[2],0,0,1);
    122112   
     
    132122    glEnable(GL_LIGHTING);
    133123   
    134     glColor3f(1,1,1);
    135    
    136     glCopyTexSubImage2D(GL_TEXTURE_2D,0,0,0,0,0,SIZE,SIZE);
    137     //glReadPixels(0,0,SIZE,SIZE,GL_RGB,GL_UNSIGNED_BYTE,this->image);
    138     //blur(this->image,SIZE);
    139     //glTexSubImage2D(GL_TEXTURE_2D,0,0,0,SIZE,SIZE,GL_RGB,GL_UNSIGNED_BYTE,this->image);
     124   
     125   
     126    //glCopyTexSubImage2D(GL_TEXTURE_2D,0,0,0,0,0,SIZE,SIZE);
     127    glReadPixels(0,0,SIZE,SIZE,GL_RGB,GL_UNSIGNED_BYTE,this->image);
     128    blur(this->image,SIZE);
     129    glTexSubImage2D(GL_TEXTURE_2D,0,0,0,SIZE,SIZE,GL_RGB,GL_UNSIGNED_BYTE,this->image);
    140130   
    141131    glDisable(GL_SCISSOR_TEST);
    142     glViewport(0,0,400,300); //Achtung: hier Aufloesung von Orxonox einstellen!
     132    glViewport(0,0,1024,768); //Achtung: hier Aufloesung von Orxonox einstellen!
    143133     
    144134   
     
    146136}
    147137
     138void Shadow::draw()
     139{
     140    float m[16],im[16];
     141   
     142    createShadow();
     143    //glClearColor(0,0,0,1);
     144    //glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
     145    //glMatrixMode(GL_PROJECTION);
     146    //glLoadIdentity();
     147    //gluPerspective(45,4.0/3.0,.5,100);
     148    //glMatrixMode(GL_MODELVIEW);
     149    //glLoadIdentity();
     150       
     151    this->mat->select();
     152    glCallList(this->ground_id);
     153   
     154    //glDisable(GL_TEXTURE_2D);
     155       
     156    glEnable(GL_TEXTURE_GEN_S);
     157    glEnable(GL_TEXTURE_GEN_T);
     158    glEnable(GL_TEXTURE_GEN_R);
     159    glEnable(GL_TEXTURE_GEN_Q);
     160    glGetFloatv(GL_MODELVIEW_MATRIX,m);
     161    m_inverse(m,im);
     162    glMatrixMode(GL_TEXTURE);
     163    glLoadIdentity();
     164    //glTranslatef(.5,.5,0);
     165    //glScalef(.5,.5,1.0);
     166    //glOrtho(-1,1,-1,1,-1,1);
     167   
     168    gluLookAt(this->lightPos[0],this->lightPos[1],this->lightPos[2],this->playerPos[0],this->playerPos[1],this->playerPos[2],0,0,1);
     169   
     170    glMultMatrixf(im);
     171    glEnable(GL_TEXTURE_2D),
     172    glBindTexture(GL_TEXTURE_2D,this->shadow_id);
     173    glEnable(GL_BLEND);
     174    glBlendFunc(GL_DST_COLOR,GL_SRC_COLOR);
     175    //glCallList(this->ground_id);
     176    glDisable(GL_BLEND);
     177    glDisable(GL_TEXTURE_2D);
     178   
     179    glLoadIdentity();
     180    glMatrixMode(GL_MODELVIEW);
     181    glDisable(GL_TEXTURE_GEN_S);
     182    glDisable(GL_TEXTURE_GEN_T);
     183    glDisable(GL_TEXTURE_GEN_R);
     184    glDisable(GL_TEXTURE_GEN_Q);
     185   
     186   
     187   
     188   
     189   
     190}
    148191
    149192/**
     
    168211}
    169212
    170 /**
    171     brief takes the ground data from the world.cc class and passes it to shadow.cc
    172 
    173 */
    174 
    175 void Shadow::setGround()
    176 {
    177    
    178    
    179     glBegin(GL_QUADS);
    180     for(int i=0;i<100;i+=1)
    181         for(int j=0;j<80;j+=1)
    182             {
    183             glNormal3f(normal_vectors[i][j].x,normal_vectors[i][j].y,normal_vectors[i][j].z);
    184             glTexCoord2f(0.0f,0.0f);
    185             glVertex3f(vertexes[0][i][j].x,vertexes[0][i][j].y,vertexes[0][i][j].z);
    186             glNormal3f(normal_vectors[i+1][j].x,normal_vectors[i+1][j].y,normal_vectors[i+1][j].z);
    187             glTexCoord2f(1.0f,0.0f);
    188             glVertex3f(vertexes[1][i][j].x,vertexes[1][i][j].y,vertexes[1][i][j].z);
    189             glNormal3f(normal_vectors[i+1][j+1].x,normal_vectors[i+1][j+1].y,normal_vectors[i+1][j+1].z);
    190             glTexCoord2f(1.0f,1.0f);
    191             glVertex3f(vertexes[2][i][j].x,vertexes[2][i][j].y,vertexes[2][i][j].z);
    192             glNormal3f(normal_vectors[i][j+1].x,normal_vectors[i][j+1].y,normal_vectors[i][j+1].z);
    193             glTexCoord2f(0.0f,1.0f);
    194             glVertex3f(vertexes[3][i][j].x,vertexes[3][i][j].y,vertexes[3][i][j].z);
    195             }
    196     glEnd();
    197        
    198 
    199 
    200 
    201 }
    202 
    203 void Shadow::setNormal(Vector a,int i,int j)
    204 {
    205     normal_vectors[i][j]=a;
    206 
    207 }
    208 
    209 void Shadow::setVertexNum(Vector a,int i,int j,int num)
    210 {
    211     vertexes[num][i][j]=a;
    212 
    213 }
     213
     214
     215
     216
    214217/**
    215218
     
    256259*/
    257260
    258 void Shadow::draw()
    259 {
    260     float m[16],im[16];
    261    
    262     createShadow();
    263     //glClearColor(0,0,0,0);
    264     //glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    265     //glMatrixMode(GL_PROJECTION);
    266     //glLoadIdentity();
    267     //gluPerspective(45,4.0/3.0,.5,100);
    268     //glMatrixMode(GL_MODELVIEW);
    269     //glLoadIdentity();
    270    
    271    
    272    
    273     glEnable(GL_TEXTURE_GEN_S);
    274     glEnable(GL_TEXTURE_GEN_T);
    275     glEnable(GL_TEXTURE_GEN_R);
    276     glEnable(GL_TEXTURE_GEN_Q);
    277     glGetFloatv(GL_MODELVIEW_MATRIX,m);
    278     m_inverse(m,im);
    279     glMatrixMode(GL_TEXTURE);
    280     glLoadIdentity();
    281     glTranslatef(-.5,.5,0);
    282     glScalef(0.3,0.3,1.0);
    283     glOrtho(-1,1,-1,1,-1,1);
    284    
    285     gluLookAt(this->lightPos[0],this->lightPos[1],this->lightPos[2],this->playerPos[0],this->playerPos[1],this->playerPos[2],0,0,1);
    286    
    287     glMultMatrixf(im);
    288     glEnable(GL_TEXTURE_2D),
    289     glBindTexture(GL_TEXTURE_2D,this->shadow_id);
    290     glEnable(GL_BLEND);
    291     glBlendFunc(GL_DST_COLOR,GL_SRC_COLOR);
    292     glCallList(this->ground_id);
    293     glDisable(GL_BLEND);
    294     glDisable(GL_TEXTURE_2D);
    295    
    296     glLoadIdentity();
    297     glMatrixMode(GL_MODELVIEW);
    298     glDisable(GL_TEXTURE_GEN_S);
    299     glDisable(GL_TEXTURE_GEN_T);
    300     glDisable(GL_TEXTURE_GEN_R);
    301     glDisable(GL_TEXTURE_GEN_Q);
    302    
    303    
    304    
    305 }
    306261
    307262
  • orxonox/branches/shadows/src/shadow.h

    r3760 r3839  
    3333        float lightPos[3];
    3434        float playerPos[3];
    35 
     35        Material* mat;
    3636       
    3737        unsigned char *image;
     
    5151        Shadow(OBJModel* player,Player* playerangle);
    5252        ~Shadow();
    53         void init();
     53        void init(GLuint ground_id);
    5454        void createShadow();
    55         void createGroundList();
    5655        void draw();
    57         void setGround();
    58         void setNormal(Vector a,int i,int j);
    59         void setVertexNum(Vector a,int i,int j,int num);
    6056        void updatePosition(float x,float y,float z);
    6157
  • orxonox/branches/shadows/src/skysphere.cc

    r3706 r3839  
    9090    glRotatef(-250.0f,0.0,1.0f,0.0f);
    9191   
    92     gluSphere(sphereObj,200.0f,20,20);
     92    gluSphere(sphereObj,150.0f,20,20);
    9393    glPopMatrix();
    9494    glDisable(GL_COLOR_MATERIAL);
  • orxonox/branches/shadows/src/world.cc

    r3760 r3839  
    453453        normal_vectors[i][j]=c1.cross(v3-v5)+c2.cross(v4-v2)+c3.cross(v5-v3)+c4.cross(v2-v4);
    454454        normal_vectors[i][j].normalize();
    455         shadow->setNormal(normal_vectors[i][j],i,j);
     455
    456456      }
    457457     
     
    470470        a[2]=.8;
    471471        glMaterialfv(GL_FRONT,GL_DIFFUSE,a);
    472         shadow->setVertexNum(v1,i,j,0);
    473         shadow->setVertexNum(v2,i,j,1);
    474         shadow->setVertexNum(v3,i,j,2);
    475         shadow->setVertexNum(v4,i,j,3);
    476        
     472
    477473                       
    478474       
     
    498494       
    499495      }
    500       if(first){
     496      /*if(first){
    501497        shadow->createGroundList();
    502498        first=false;
    503         }
     499        }*/
    504500       
    505501  glEnd();
     
    528524   
    529525  glEndList();
    530  shadow->init(); 
     526 shadow->init(objectList); 
    531527 
    532528}
     
    583579  // draw entities
    584580 
    585  
     581
    586582  WorldEntity* entity;
    587583  entity = this->entities->enumerate();
     584 
    588585  while( entity != NULL )
    589586    {
     
    598595  //glLoadIdentity();
    599596 
    600   glCallList (objectList);
     597 
    601598 
    602599
     
    604601 
    605602  glEnable(GL_TEXTURE_2D);
     603 
    606604  skysphere->draw();
    607  
    608   shadow->draw();
     605  shadow->draw();
     606 
    609607 
    610608 
Note: See TracChangeset for help on using the changeset viewer.