- Timestamp:
- Jun 11, 2006, 12:49:25 PM (19 years ago)
- Location:
- trunk/src
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/lib/graphics/importer/material.cc
r8037 r8312 103 103 * @brief sets the material with which the following Faces will be painted 104 104 */ 105 bool Material::select() const105 bool Material::select() const 106 106 { 107 107 if (unlikely(this == Material::selectedMaterial)) … … 397 397 assert(textureNumber < this->textures.size()); 398 398 399 glActiveTexture(0); 399 // HACK 400 glActiveTexture(textureNumber); 400 401 glEnable(GL_TEXTURE_2D); 401 402 glBindTexture(GL_TEXTURE_2D, this->textures[textureNumber].getTexture()); -
trunk/src/lib/graphics/importer/texture.cc
r8293 r8312 151 151 152 152 153 Texture::Texture(GLenum target )153 Texture::Texture(GLenum target, unsigned int width, unsigned int height, unsigned int channels, GLenum type) 154 154 { 155 155 this->init(); 156 GLuint texture ;156 GLuint texture = 0; 157 157 Texture::generateTexture(texture, target); 158 159 glBindTexture(target, texture); 160 161 unsigned int* pixels = new unsigned int[width * height * channels]; 162 memset(pixels, 0, width * height * channels * sizeof(unsigned int)); 163 164 165 glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); 166 glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); 167 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); 168 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 169 170 glTexImage2D(target, 0, channels, width, height, 0, type, GL_UNSIGNED_INT, pixels); 171 172 173 174 delete[] pixels; 175 158 176 this->data->setTexture(texture); 159 177 } … … 374 392 // printf("%s, w:%d h:%d, 0x%x\n", this->getName(), surface->w, surface->h, target); 375 393 394 /* control the mipmap levels */ 395 glTexParameterf(GL_TEXTURE_ENV, GL_TEXTURE_MIN_LOD, 5); 396 glTexParameterf(GL_TEXTURE_ENV, GL_TEXTURE_MAX_LOD, 0); 397 376 398 // build the MipMaps automaticaly 377 399 errorCode = gluBuild2DMipmaps(target, format, … … 400 422 glTexParameteri(target, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 401 423 402 /* control the mipmap levels */ 403 glTexParameterf(GL_TEXTURE_ENV, GL_TEXTURE_MIN_LOD, 5); 404 glTexParameterf(GL_TEXTURE_ENV, GL_TEXTURE_MAX_LOD, 0); 405 } 424 } -
trunk/src/lib/graphics/importer/texture.h
r8145 r8312 50 50 Texture(); 51 51 Texture(const Texture& texture); 52 Texture(GLenum target );52 Texture(GLenum target, unsigned int width, unsigned int height, unsigned int channels, GLenum type); 53 53 Texture(const std::string& imageName, GLenum target = GL_TEXTURE_2D); 54 54 Texture(SDL_Surface* surface, GLenum target = GL_TEXTURE_2D); -
trunk/src/lib/gui/gl/glgui_cursor.cc
r8309 r8312 33 33 this->init(); 34 34 35 this->subscribeEvent(ES_ MENU, EV_MOUSE_MOTION);36 this->subscribeEvent(ES_ MENU, EV_WINDOW_FOCUS);35 this->subscribeEvent(ES_ALL, EV_MOUSE_MOTION); 36 this->subscribeEvent(ES_ALL, EV_WINDOW_FOCUS); 37 37 38 38 -
trunk/src/lib/gui/gl/glgui_handler.cc
r8145 r8312 40 40 41 41 42 EventHandler::getInstance()->withUNICODE(ES_ MENU, true );42 EventHandler::getInstance()->withUNICODE(ES_ALL, true ); 43 43 44 44 this->cursor = NULL; 45 45 for (unsigned int i = 0; i < EV_NUMBER; i++) 46 46 { 47 this->subscribeEvent(ES_ MENU, i);47 this->subscribeEvent(ES_ALL, i); 48 48 } 49 49 } -
trunk/src/lib/gui/gl/glgui_widget.cc
r8145 r8312 234 234 235 235 236 236 237 void GLGuiWidget::hide() 237 238 { -
trunk/src/lib/gui/gl/glgui_widget.h
r8148 r8312 53 53 void show(); 54 54 void hide(); 55 56 55 57 56 void setParentWidget(GLGuiWidget* parent); -
trunk/src/story_entities/game_world.cc
r8271 r8312 407 407 if( likely(this->dataTank->gameRule != NULL)) 408 408 this->dataTank->gameRule->tick(this->dtS); 409 409 410 } 410 411 } … … 514 515 mw = dynamic_cast<MappedWater*>(*it); 515 516 516 // prepare for reflection rendering517 mw->activateReflection();518 519 517 //camera and light 520 518 this->dataTank->localCamera->apply (); 521 519 this->dataTank->localCamera->project (); 520 521 LightManager::getInstance()->draw(); 522 523 524 // prepare for reflection rendering 525 mw->activateReflection(); 526 527 // draw everything to be included in the reflection 528 this->drawEntityList(State::getObjectManager()->getReflectionList()); 529 // for (unsigned int i = 0; i < this->dataTank->drawLists.size(); ++i) 530 // this->drawEntityList(State::getObjectManager()->getObjectList(this->dataTank->drawLists[i])); 531 532 // clean up from reflection rendering 533 mw->deactivateReflection(); 534 } 535 } 536 537 } 538 539 540 /** 541 * refraction rendering for water surfaces 542 */ 543 void GameWorld::renderPassRefraction() 544 { 545 // clear buffer 546 glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); 547 glLoadIdentity(); 548 549 const std::list<BaseObject*>* reflectedWaters; 550 MappedWater* mw; 551 552 if( (reflectedWaters = ClassList::getList(CL_MAPPED_WATER)) != NULL) 553 { 554 std::list<BaseObject*>::const_iterator it; 555 for (it = reflectedWaters->begin(); it != reflectedWaters->end(); it++) 556 { 557 mw = dynamic_cast<MappedWater*>(*it); 558 559 //camera and light 560 this->dataTank->localCamera->apply (); 561 this->dataTank->localCamera->project (); 562 // prepare for reflection rendering 563 mw->activateRefraction(); 564 565 522 566 LightManager::getInstance()->draw(); 523 567 // draw everything to be included in the reflection … … 527 571 528 572 // clean up from reflection rendering 529 mw->deactivateReflection();530 }531 }532 533 }534 535 536 /**537 * refraction rendering for water surfaces538 */539 void GameWorld::renderPassRefraction()540 {541 542 // clear buffer543 glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);544 glLoadIdentity();545 546 const std::list<BaseObject*>* reflectedWaters;547 MappedWater* mw;548 549 if( (reflectedWaters = ClassList::getList(CL_MAPPED_WATER)) != NULL)550 {551 std::list<BaseObject*>::const_iterator it;552 for (it = reflectedWaters->begin(); it != reflectedWaters->end(); it++)553 {554 mw = dynamic_cast<MappedWater*>(*it);555 556 // prepare for reflection rendering557 mw->activateRefraction();558 559 //camera and light560 this->dataTank->localCamera->apply ();561 this->dataTank->localCamera->project ();562 LightManager::getInstance()->draw();563 // draw everything to be included in the reflection564 this->drawEntityList(State::getObjectManager()->getReflectionList());565 // for (unsigned int i = 0; i < this->dataTank->drawLists.size(); ++i)566 // this->drawEntityList(State::getObjectManager()->getObjectList(this->dataTank->drawLists[i]));567 568 // clean up from reflection rendering569 573 mw->deactivateRefraction(); 570 574 } … … 583 587 584 588 585 //glEnable(GL_DEPTH_TEST);586 //glEnable(GL_LIGHTING);589 glEnable(GL_DEPTH_TEST); 590 glEnable(GL_LIGHTING); 587 591 588 592 // set camera -
trunk/src/world_entities/environments/mapped_water.cc
r8037 r8312 40 40 // set up refleciton texture 41 41 //mat.setDiffuseMap(this->texture, 0); 42 mat.setDiffuseMap("pictures/ dudvmap.bmp", GL_TEXTURE_2D, 0);42 mat.setDiffuseMap("pictures/refl.bmp", GL_TEXTURE_2D, 0); 43 43 // load refraction texture 44 mat.setDiffuseMap("pictures/ error_texture.png", GL_TEXTURE_2D, 1);44 mat.setDiffuseMap("pictures/refr.bmp", GL_TEXTURE_2D, 1); 45 45 // load normal map 46 //mat.setDiffuseMap("pictures/normalmap.bmp", GL_TEXTURE_2D, 2);46 mat.setDiffuseMap("pictures/normalmap.bmp", GL_TEXTURE_2D, 2); 47 47 // load dudv map 48 //mat.setDiffuseMap("pictures/dudvmap.bmp", GL_TEXTURE_2D, 3);48 mat.setDiffuseMap("pictures/dudvmap.bmp", GL_TEXTURE_2D, 3); 49 49 // set up depth texture 50 50 //mat.setDiffuseMap("pictures/sky-replace.jpg", GL_TEXTURE_2D, 4); … … 56 56 // set the size of the refraction and reflection textures 57 57 this->textureSize = 512; 58 //unsigned int channels = 32; 59 //GLenum type = GL_RGBA; 60 //unsigned int* pTextureReflection = new unsigned int [this->textureSize * this->textureSize * channels]; 61 //memset(pTextureReflection, 0, this->textureSize * this->textureSize * channels * sizeof(unsigned int)); 62 //unsigned int* pTextureRefraction = new unsigned int [this->textureSize * this->textureSize * channels]; 63 //memset(pTextureRefraction, 0, this->textureSize * this->textureSize * channels * sizeof(unsigned int)); 64 // Register the texture with OpenGL and bind it to the texture ID 65 //mat.select(); 66 //glBindTexture(GL_TEXTURE_2D, this->mat.getDiffuseTexture(0)); 67 68 // Create the texture and store it on the video card 69 //glTexImage2D(GL_TEXTURE_2D, 0, channels, this->textureSize, this->textureSize, 0, type, GL_UNSIGNED_INT, pTextureReflection); 70 71 //gluBuild2DMipmaps(GL_TEXTURE_2D, channels, this->textureSize, this->textureSize, type, GL_UNSIGNED_INT, pTexture); 72 73 //the same for the refraction 74 //glBindTexture(GL_TEXTURE_2D, this->mat.getDiffuseTexture(1)); 75 //glTexImage2D(GL_TEXTURE_2D, 0, channels, this->textureSize, this->textureSize, 0, type, GL_UNSIGNED_INT, pTextureRefraction); 76 58 77 unsigned int channels = 32; 59 78 GLenum type = GL_RGBA; 60 79 unsigned int* pTextureReflection = new unsigned int [this->textureSize * this->textureSize * channels]; 61 80 memset(pTextureReflection, 0, this->textureSize * this->textureSize * channels * sizeof(unsigned int)); 62 unsigned int* pTextureRefraction = new unsigned int [this->textureSize * this->textureSize * channels]; 63 memset(pTextureRefraction, 0, this->textureSize * this->textureSize * channels * sizeof(unsigned int)); 64 // Register the texture with OpenGL and bind it to the texture ID 65 mat.select(); 81 //mat.select(); 66 82 glBindTexture(GL_TEXTURE_2D, this->mat.getDiffuseTexture(0)); 67 68 // Create the texture and store it on the video card69 glTexImage2D(GL_TEXTURE_2D, 0, channels, this->textureSize, this->textureSize, 0, type, GL_UNSIGNED_INT, pTextureReflection);70 71 //gluBuild2DMipmaps(GL_TEXTURE_2D, channels, this->textureSize, this->textureSize, type, GL_UNSIGNED_INT, pTexture);72 73 //the same for the refraction74 glBindTexture(GL_TEXTURE_2D, this->mat.getDiffuseTexture(1));75 glTexImage2D(GL_TEXTURE_2D, 0, channels, this->textureSize, this->textureSize, 0, type, GL_UNSIGNED_INT, pTextureRefraction);76 77 // Set the texture quality78 83 glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); 79 84 glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); 80 85 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); 81 86 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 87 glTexImage2D(GL_TEXTURE_2D, 0, channels, this->textureSize, this->textureSize, 0, type, GL_UNSIGNED_INT, pTextureReflection); 88 89 90 unsigned int* pTextureRefraction = new unsigned int [this->textureSize * this->textureSize * channels]; 91 memset(pTextureRefraction, 0, this->textureSize * this->textureSize * channels * sizeof(unsigned int)); 92 glBindTexture(GL_TEXTURE_2D, this->mat.getDiffuseTexture(1)); 93 glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); 94 glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); 95 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); 96 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 97 glTexImage2D(GL_TEXTURE_2D, 0, channels, this->textureSize, this->textureSize, 0, type, GL_UNSIGNED_INT, pTextureRefraction); 98 99 // Set the texture quality 100 82 101 83 102 // Since we stored the texture space with OpenGL, we can delete the image data 84 delete [] pTextureReflection;85 delete [] pTextureRefraction;103 //delete [] pTextureReflection; 104 //delete [] pTextureRefraction; 86 105 87 106 … … 94 113 /// initialization of the shaders 95 114 // load shader files 96 /*shader = new Shader( ResourceManager::getInstance()->getDataDir() + "/shaders/mapped_water.vert", ResourceManager::getInstance()->getDataDir() +"/shaders/mapped_water.frag");115 shader = new Shader( ResourceManager::getInstance()->getDataDir() + "/shaders/mapped_water.vert", ResourceManager::getInstance()->getDataDir() +"/shaders/mapped_water.frag"); 97 116 98 117 this->shader->activateShader(); … … 106 125 Shader::Uniform(shader, "dudvMap").set(3); 107 126 // Set the variable "depthMap" to correspond to the fifth texture unit 108 Shader::Uniform(shader, "depthMap").set( 4);127 Shader::Uniform(shader, "depthMap").set(2); 109 128 // Give the variable "waterColor" a blue color 110 129 Shader::Uniform(shader, "waterColor").set(0.1f, 0.2f, 0.4f, 1.0f); … … 114 133 cam_uni = new Shader::Uniform(shader, "cameraPos"); 115 134 116 this->shader->deactivateShader(); */135 this->shader->deactivateShader(); 117 136 } 118 137 … … 134 153 void MappedWater::draw() const 135 154 { 155 glMatrixMode(GL_MODELVIEW); 156 136 157 glPushMatrix(); 137 158 glTranslatef(0,this->waterHeight,0); … … 140 161 mat.select(); 141 162 142 ///this->shader->activateShader();163 this->shader->activateShader(); 143 164 144 165 // reset the camera uniform to the current cam position 145 166 Vector pos = State::getCameraNode()->getAbsCoor(); 146 ///cam_uni->set(pos.x, pos.y, pos.z, 1.0f); 167 cam_uni->set(pos.x, pos.y, pos.z, 1.0f); 168 169 //glDisable(GL_BLEND); 147 170 148 171 glBegin(GL_QUADS); 149 172 // The back left vertice for the water 150 glMultiTexCoord2f(GL_TEXTURE0, 0.0f, 0);//g_WaterUV); // Reflection texture 151 glMultiTexCoord2f(GL_TEXTURE1, 0.0f, 0);//refrUV - move); // Refraction texture 173 // glMultiTexCoord2f(GL_TEXTURE0, 0.0f, 0);//g_WaterUV); // Reflection texture 174 // glMultiTexCoord2f(GL_TEXTURE1, 0.0f, 0);//refrUV - move); // Refraction texture 175 glMultiTexCoord2f(GL_TEXTURE0, 0.0f, g_WaterUV); // Reflection texture 176 glMultiTexCoord2f(GL_TEXTURE1, 0.0f, refrUV - move); // Refraction texture 152 177 glMultiTexCoord2f(GL_TEXTURE2, 0.0f, normalUV + move2); // Normal map texture 153 178 glMultiTexCoord2f(GL_TEXTURE3, 0, 0); // DUDV map texture 154 glMultiTexCoord2f(GL_TEXTURE4, 0, 0); // Depth texture179 //glMultiTexCoord2f(GL_TEXTURE4, 0, 0); // Depth texture 155 180 glVertex3f(0.0f, waterHeight, 0.0f); 156 181 157 182 // The front left vertice for the water 158 glMultiTexCoord2f(GL_TEXTURE0, 0.0f, 1);//0.0f); // Reflection texture 159 glMultiTexCoord2f(GL_TEXTURE1, 0.0f, 1);//0.0f - move); // Refraction texture 183 // glMultiTexCoord2f(GL_TEXTURE0, 0.0f, 1);//0.0f); // Reflection texture 184 // glMultiTexCoord2f(GL_TEXTURE1, 0.0f, 1);//0.0f - move); // Refraction texture 185 glMultiTexCoord2f(GL_TEXTURE0, 0.0f, 0.0f); // Reflection texture 186 glMultiTexCoord2f(GL_TEXTURE1, 0.0f, 0.0f - move); // Refraction texture 160 187 glMultiTexCoord2f(GL_TEXTURE2, 0.0f, 0.0f + move2); // Normal map texture 161 188 glMultiTexCoord2f(GL_TEXTURE3, 0, 0); // DUDV map texture 162 glMultiTexCoord2f(GL_TEXTURE4, 0, 0); // Depth texture189 //glMultiTexCoord2f(GL_TEXTURE4, 0, 0); // Depth texture 163 190 glVertex3f(0.0f, waterHeight, 1000.0f); 164 191 165 192 // The front right vertice for the water 166 glMultiTexCoord2f(GL_TEXTURE0, 1,1); //g_WaterUV, 0.0f); // Reflection texture 167 glMultiTexCoord2f(GL_TEXTURE1, 1,1);//refrUV, 0.0f - move); // Refraction texture 193 // glMultiTexCoord2f(GL_TEXTURE0, 1,1); //g_WaterUV, 0.0f); // Reflection texture 194 // glMultiTexCoord2f(GL_TEXTURE1, 1,1);//refrUV, 0.0f - move); // Refraction texture 195 glMultiTexCoord2f(GL_TEXTURE0, g_WaterUV, 0.0f); // Reflection texture 196 glMultiTexCoord2f(GL_TEXTURE1, refrUV, 0.0f - move); // Refraction texture 168 197 glMultiTexCoord2f(GL_TEXTURE2, normalUV, 0.0f + move2); // Normal map texture 169 198 glMultiTexCoord2f(GL_TEXTURE3, 0, 0); // DUDV map texture 170 glMultiTexCoord2f(GL_TEXTURE4, 0, 0); // Depth texture199 //glMultiTexCoord2f(GL_TEXTURE4, 0, 0); // Depth texture 171 200 glVertex3f(1000.0f, waterHeight, 1000.0f); 172 201 173 202 // The back right vertice for the water 174 glMultiTexCoord2f(GL_TEXTURE0, 1,0);//g_WaterUV, g_WaterUV); // Reflection texture 175 glMultiTexCoord2f(GL_TEXTURE1, 1,0);//refrUV, refrUV - move); // Refraction texture 203 // glMultiTexCoord2f(GL_TEXTURE0, 1,0);//g_WaterUV, g_WaterUV); // Reflection texture 204 // glMultiTexCoord2f(GL_TEXTURE1, 1,0);//refrUV, refrUV - move); // Refraction texture 205 glMultiTexCoord2f(GL_TEXTURE0, g_WaterUV, g_WaterUV); // Reflection texture 206 glMultiTexCoord2f(GL_TEXTURE1, refrUV, refrUV - move); // Refraction texture 176 207 glMultiTexCoord2f(GL_TEXTURE2, normalUV, normalUV + move2); // Normal map texture 177 208 glMultiTexCoord2f(GL_TEXTURE3, 0, 0); // DUDV map texture 178 glMultiTexCoord2f(GL_TEXTURE4, 0, 0); // Depth texture209 //glMultiTexCoord2f(GL_TEXTURE4, 0, 0); // Depth texture 179 210 glVertex3f(1000.0f, waterHeight, 0.0f); 180 211 glEnd(); 181 212 182 ///this->shader->deactivateShader();213 this->shader->deactivateShader(); 183 214 184 215 mat.unselect(); … … 207 238 glViewport(0,0, textureSize, textureSize); 208 239 240 glMatrixMode(GL_MODELVIEW); 209 241 glPushMatrix(); 210 242 … … 214 246 glEnable(GL_CLIP_PLANE0); 215 247 Vector pos = State::getCameraNode()->getAbsCoor(); 248 //pos.debug(); 249 //PRINTF(0)("waterheight: %f\n", waterHeight); 216 250 if(pos.y > waterHeight) 217 251 { … … 242 276 glCullFace(GL_BACK); 243 277 244 mat.select(); 245 //glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, textureSize, textureSize); 246 mat.renderToTexture(0, GL_TEXTURE_2D, 0, 0, 0, 0, 0, textureSize, textureSize); 278 //mat.select(); 279 /////glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, textureSize, textureSize); 280 ///mat.renderToTexture(0, GL_TEXTURE_2D, 0, 0, 0, 0, 0, textureSize, textureSize); 281 /// 282 283 glBindTexture(GL_TEXTURE_2D, this->mat.getDiffuseTexture(0)); 284 285 // Create the texture and store it on the video card 286 glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, textureSize, textureSize); 287 247 288 248 289 glPopMatrix(); … … 251 292 252 293 void MappedWater::activateRefraction() 253 { 294 {/* 295 // save viewport matrix and change the viewport size 296 glPushAttrib(GL_VIEWPORT_BIT); 297 glViewport(0,0, textureSize, textureSize); 298 299 glMatrixMode(GL_MODELVIEW); 300 glPushMatrix(); 301 302 // If our camera is above the water we will render the scene flipped upside down. 303 // In order to line up the reflection nicely with the world we have to translate 304 // the world to the position of our reflected surface, multiplied by two. 305 glEnable(GL_CLIP_PLANE0); 306 Vector pos = State::getCameraNode()->getAbsCoor(); 307 //pos.debug(); 308 //PRINTF(0)("waterheight: %f\n", waterHeight); 309 if(pos.y > waterHeight) 310 { 311 // Translate the world, then flip it upside down 312 glTranslatef(0.0f, waterHeight*2.0f, 0.0f); 313 glScalef(1.0, -1.0, 1.0); 314 315 // Since the world is updside down we need to change the culling to FRONT 316 glCullFace(GL_FRONT); 317 318 // Set our plane equation and turn clipping on 319 double plane[4] = {0.0, 1.0, 0.0, -waterHeight}; 320 glClipPlane(GL_CLIP_PLANE0, plane); 321 } 322 else 323 { 324 // If the camera is below the water we don't want to flip the world, 325 // but just render it clipped so only the top is drawn. 326 double plane[4] = {0.0, 1.0, 0.0, waterHeight}; 327 glClipPlane(GL_CLIP_PLANE0, plane); 328 } 329 */ 330 254 331 // To create the refraction and depth textures we do the same thing 255 332 // we did for the reflection texture, except we don't need to turn … … 261 338 glViewport(0,0, textureSize, textureSize); 262 339 340 glMatrixMode(GL_MODELVIEW); 263 341 glPushMatrix(); 264 342 … … 275 353 double plane[4] = {0.0, -1.0, 0.0, waterHeight}; 276 354 glClipPlane(GL_CLIP_PLANE0, plane); 355 277 356 } 278 357 // If the camera is below the water, only render the data above the water … … 290 369 glCullFace(GL_BACK); 291 370 292 mat.select(); 293 mat.renderToTexture(1, GL_TEXTURE_2D, 0, 0, 0, 0, 0, textureSize, textureSize); 294 //glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 0, 0, textureSize, textureSize, 0); 295 //mat.renderToTexture(0, GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 0, textureSize, textureSize, 0); 371 372 glBindTexture(GL_TEXTURE_2D, this->mat.getDiffuseTexture(1)); 373 374 // Create the texture and store it on the video card 375 glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, textureSize, textureSize); 376 377 glPopMatrix(); 378 glPopAttrib(); 296 379 297 380 // Bind the current scene to our refraction texture … … 303 386 // glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 0, 0, textureSize, textureSize, 0); 304 387 305 glPopMatrix(); 306 glPopAttrib(); 307 } 388 }
Note: See TracChangeset
for help on using the changeset viewer.