void init() { glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize(360, 360); glutCreateWindow( "Cylinder Calculate Light" ); glEnable(GL_DEPTH_TEST); glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); set_lighting(); GenerateSurface(); glShadeModel(GL_SMOOTH); }
/* ==================== idRenderModelLiquid::InstantiateDynamicModel ==================== */ idRenderModel* idRenderModelLiquid::InstantiateDynamicModel( const struct renderEntity_s* ent, const viewDef_t* view, idRenderModel* cachedModel ) { idRenderModelStatic* staticModel; int frames; int t; float lerp; if( cachedModel ) { delete cachedModel; cachedModel = NULL; } if( !deformInfo ) { return NULL; } if( !view ) { t = 0; } else { t = view->renderView.time[0]; } // update the liquid model frames = ( t - time ) / update_tics; if( frames > LIQUID_MAX_SKIP_FRAMES ) { // don't let time accumalate when skipping frames time += update_tics * ( frames - LIQUID_MAX_SKIP_FRAMES ); frames = LIQUID_MAX_SKIP_FRAMES; } while( frames > 0 ) { Update(); frames--; } // create the surface lerp = ( float )( t - time ) / ( float )update_tics; modelSurface_t surf = GenerateSurface( lerp ); staticModel = new( TAG_MODEL ) idRenderModelStatic; staticModel->AddSurface( surf ); staticModel->bounds = surf.geometry->bounds; return staticModel; }