Changeset 3679 in orxonox.OLD for orxonox/branches/dave/src/shadow.cc
- Timestamp:
- Mar 30, 2005, 8:01:06 PM (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
orxonox/branches/dave/src/shadow.cc
r3674 r3679 39 39 */ 40 40 41 Shadow::Shadow() 42 { 41 Shadow::Shadow(Model* player,float* groundVertexes) 42 { 43 this->player=player; 43 44 } 44 45 … … 51 52 { 52 53 } 54 55 void Shadow::init() 56 { 57 58 float plane_s[] ={1.0f,0.0f,0.0f,0.0f}; 59 float plane_t[] ={0.0f,1.0f,0.0f,0.0f}; 60 float plane_r[] ={0.0f,0.0f,1.0f,0.0f}; 61 float plane_q[] ={0.0f,0.0f,0.0f,1.0f}; 62 63 glClearDepth(1); 64 glDepthFunc(GL_LEQUAL); 65 glTexGenfv(GL_S,GL_EYE_PLANE,plane_s); 66 glTexGenfv(GL_T,GL_EYE_PLANE,plane_t); 67 glTexGenfv(GL_R,GL_EYE_PLANE,plane_r); 68 glTexGenfv(GL_Q,GL_EYE_PLANE,plane_q); 69 glTexGeni(GL_S,GL_TEXTURE_GEN_MODE,GL_EYE_LINEAR); 70 glTexGeni(GL_T,GL_TEXTURE_GEN_MODE,GL_EYE_LINEAR); 71 glTexGeni(GL_R,GL_TEXTURE_GEN_MODE,GL_EYE_LINEAR); 72 glTexGeni(GL_Q,GL_TEXTURE_GEN_MODE,GL_EYE_LINEAR); 73 74 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); 75 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); 76 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE_EXT); 77 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_EDGE_EXT); 78 glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,SIZE,SIZE,0,GL_RGB,GL_UNSIGNED_BYTE,NULL); 79 80 this->ground_id=glGenLists(1); 81 glNewList(this->ground_id,GL_COMPILE); 82 83 //blabla 84 85 glEndList(); 86 87 this->player_id=glGenLists(1); 88 glNewList(this->player_id,GL_COMPILE); 89 90 //blabla 91 92 glEndList(); 93 94 this->image=(unsigned char*)malloc(SIZE*SIZE*4); 95 96 //this->player_id=newList {glNormalefv;glVertex3fv} 97 //this->ground_id=newList {glTexCoord2fv;glNormal3fv;glVertex3fv} 98 99 100 //lightPos[] blabla 101 } 102 103 104 void Shadow::createShadow() 105 { 106 glViewport(0,0,SIZE,SIZE); 107 glScissor(0,0,SIZE,SIZE); 108 glEnable(GL_SCISSOR_TEST); 109 glBindTexture(GL_TEXTURE_2D,this->shadow_id); 110 111 glClearColor(1,1,1,1); 112 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 113 glMatrixMode(GL_PROJECTION); 114 glLoadIdentity(); 115 glOrtho(-1,1,-1,1,-100,100); 116 glMatrixMode(GL_MODELVIEW); 117 glLoadIdentity(); 118 119 //gluLookAt(light0,light1,light2,player0,player1,player2,0,0,1); 120 121 glColor3f(.4,.4,.4); 122 //glTranslatef(player0,player1,player2); 123 glCallList(this->player_id); 124 glColor3f(1,1,1); 125 glReadPixels(0,0,SIZE,SIZE,GL_RGB,GL_UNSIGNED_BYTE,this->image); 126 blur(this->image,SIZE); 127 glTexSubImage2D(GL_TEXTURE_2D,0,0,0,SIZE,SIZE,GL_RGB,GL_UNSIGNED_BYTE,this->image); 128 129 glDisable(GL_SCISSOR_TEST); 130 glViewport(0,0,1024,768); //Achtung: hier Aufloesung von Orxonox einstellen! 131 132 133 134 } 135 136 void Shadow::m_inverse(const float *m,float *out) 137 { 138 float det; 139 det=m[0]*m[5]*m[10]; 140 det+= m[4]*m[9]*m[2]; 141 det+= m[8]*m[1]*m[6]; 142 det-= m[8]*m[5]*m[2]; 143 det-= m[4]*m[1]*m[10]; 144 det-= m[0]*m[9]*[6]; 145 146 147 } 148 149 150 void Shadow::draw() 151 { 152 float m[16],im[16]; 153 createShadow(); 154 155 glClearColor(0,0,0,0); 156 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 157 glMatrixMode(GL_PROJECTION); 158 glLoadIdentity(); 159 gluPerspective(45,4.0/3.0,.5,100); 160 glMatrixMode(GL_MODELVIEW); 161 glLoadIdentity(); 162 163 //gluLookAt(camera0,camera1,camera2,player0,player1,player2,0,0,1); 164 165 glEnable(GL_TEXTURE_GEN_S); 166 glEnable(GL_TEXTURE_GEN_T); 167 glEnable(GL_TEXTURE_GEN_R); 168 glEnable(GL_TEXTURE_GEN_Q); 169 glGetFloatv(GL_MODELVIEW_MATRIX,m); 170 171 } 172 53 173 54 174
Note: See TracChangeset
for help on using the changeset viewer.