// Constructor
fgMATERIAL_MGR::fgMATERIAL_MGR ( void ) {
- textures_loaded = false;
+ materials_loaded = false;
}
void
FGMaterialSlot::render_fragments()
{
+ FG_LOG( FG_GENERAL, FG_ALERT,
+ "FGMaterialSlot::render_fragments() is depricated ... " <<
+ "we shouldn't be here!" );
+
int tris_rendered = current_view.get_tris_rendered();
// cout << "rendering " + texture_name + " = " << list_size << "\n";
- if ( empty() )
+ if ( empty() ) {
return;
+ }
if ( current_options.get_textures() ) {
// Woohoo!!! We finally get to draw something!
// printf(" display_list = %d\n", frag_ptr->display_list);
- xglCallList( frag_ptr->display_list );
+ // xglCallList( frag_ptr->display_list );
}
current_view.set_tris_rendered( tris_rendered );
FGMaterial m;
in >> m;
- // if ( current_options.get_textures() ) {
- // m.load_texture( current_options.get_fg_root() );
- // }
-
FGMaterialSlot m_slot;
m_slot.set_m( m );
+
+ // build the ssgSimpleState
+ FGPath tex_file( current_options.get_fg_root() );
+ tex_file.append( "Textures" );
+ tex_file.append( m.get_texture_name() );
+ tex_file.concat( ".rgb" );
+
+ ssgSimpleState *state = new ssgSimpleState;
+ state->enable( GL_LIGHTING );
+ if ( current_options.get_shading() == 1 ) {
+ state->setShadeModel( GL_SMOOTH );
+ } else {
+ state->setShadeModel( GL_FLAT );
+ }
+ state->enable ( GL_CULL_FACE ) ;
+ if ( current_options.get_textures() ) {
+ state->enable( GL_TEXTURE_2D );
+ state->setTexture( (char *)tex_file.c_str() );
+ state->setMaterial ( GL_AMBIENT_AND_DIFFUSE, 1, 1, 1, 1 ) ;
+ state->setMaterial ( GL_SPECULAR, 0, 0, 0, 0 ) ;
+ state->setMaterial ( GL_EMISSION, 0, 0, 0, 0 ) ;
+ } else {
+ state->disable( GL_TEXTURE_2D );
+ state->disable( GL_COLOR_MATERIAL );
+ GLfloat *ambient, *diffuse, *specular, *emission;
+ ambient = m.get_ambient();
+ diffuse = m.get_diffuse();
+ specular = m.get_specular();
+ emission = m.get_emission();
+
+ /* cout << "ambient = " << ambient[0] << "," << ambient[1]
+ << "," << ambient[2] << endl; */
+ state->setMaterial ( GL_AMBIENT,
+ ambient[0], ambient[1],
+ ambient[2], ambient[3] ) ;
+ state->setMaterial ( GL_DIFFUSE,
+ diffuse[0], diffuse[1],
+ diffuse[2], diffuse[3] ) ;
+ state->setMaterial ( GL_SPECULAR,
+ specular[0], specular[1],
+ specular[2], specular[3] ) ;
+ state->setMaterial ( GL_EMISSION,
+ emission[0], emission[1],
+ emission[2], emission[3] ) ;
+ }
+ m_slot.set_state( state );
+
material_mgr.material_map[material_name] = m_slot;
}
}
if ( current_options.get_textures() ) {
- textures_loaded = true;
+ materials_loaded = true;
}
return(1);