コード例 #1
0
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);
}
コード例 #2
0
/*
====================
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;
}