// Constructor
fgMATERIAL::fgMATERIAL ( void )
: texture_name(""),
- alpha(0),
- list_size(0)
+ alpha(0)
+ // , list_size(0)
{
ambient[0] = ambient[1] = ambient[2] = ambient[3] = 0.0;
diffuse[0] = diffuse[1] = diffuse[2] = diffuse[3] = 0.0;
emissive[0] = emissive[1] = emissive[2] = emissive[3] = 0.0;
}
-
+/*
int
fgMATERIAL::append_sort_list( fgFRAGMENT *object )
{
return 0;
}
}
+*/
istream&
operator >> ( istream& in, fgMATERIAL& m )
}
fgTILE* last_tile_ptr = NULL;
- for ( size_t i = 0; i < list_size; ++i )
- {
- fgFRAGMENT* frag_ptr = list[i];
+ frag_list_iterator current = list.begin();
+ frag_list_iterator last = list.end();
+
+ for ( ; current != last; ++current ) {
+ fgFRAGMENT* frag_ptr = *current;
current_view.tris_rendered += frag_ptr->num_faces();
if ( frag_ptr->tile_ptr != last_tile_ptr )
{
// $Log$
+// Revision 1.8 1998/10/12 23:49:17 curt
+// Changes from NHV to make the code more dynamic with fewer hard coded limits.
+//
// Revision 1.7 1998/09/17 18:35:52 curt
// Tweaks and optimizations by Norman Vine.
//
#include <string> // Standard C++ string library
#include <map> // STL associative "array"
+#include <vector> // STL "array"
#ifdef NEEDNAMESPACESTD
using namespace std;
class fgFRAGMENT;
-#define FG_MAX_MATERIAL_FRAGS 800
+// convenience types
+typedef vector < fgFRAGMENT * > frag_list_type;
+typedef frag_list_type::iterator frag_list_iterator;
+typedef frag_list_type::const_iterator frag_list_const_iterator;
+
+
+// #define FG_MAX_MATERIAL_FRAGS 800
// Material property class
// transient list of objects with this material type (used for sorting
// by material to reduce GL state changes when rendering the scene
- fgFRAGMENT * list[FG_MAX_MATERIAL_FRAGS];
- size_t list_size;
+ frag_list_type list;
+ // size_t list_size;
public:
// Constructor
fgMATERIAL ( void );
- size_t size() const { return list_size; }
- bool empty() const { return list_size == 0; }
+ int size() const { return list.size(); }
+ bool empty() const { return list.size() == 0; }
// Sorting routines
void init_sort_list( void ) {
- list_size = 0;
+ list.erase( list.begin(), list.end() );
}
- int append_sort_list( fgFRAGMENT *object );
+ bool append_sort_list( fgFRAGMENT *object ) {
+ list.push_back( object );
+ return true;
+ }
void render_fragments();
// $Log$
+// Revision 1.5 1998/10/12 23:49:18 curt
+// Changes from NHV to make the code more dynamic with fewer hard coded limits.
+//
// Revision 1.4 1998/09/17 18:35:53 curt
// Tweaks and optimizations by Norman Vine.
//