]> git.mxchange.org Git - flightgear.git/commitdiff
Changes from NHV to make the code more dynamic with fewer hard coded limits.
authorcurt <curt>
Mon, 12 Oct 1998 23:49:17 +0000 (23:49 +0000)
committercurt <curt>
Mon, 12 Oct 1998 23:49:17 +0000 (23:49 +0000)
Objects/material.cxx
Objects/material.hxx

index a921dc7ecd75bbaa0d1e0f9f8fa8e8f1977cd830..d5210dc0085ae4f15efe8b7f4fea63c3616357dc 100644 (file)
@@ -55,8 +55,8 @@ fgMATERIAL_MGR material_mgr;
 // 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;
@@ -64,7 +64,7 @@ fgMATERIAL::fgMATERIAL ( void )
     emissive[0] = emissive[1] = emissive[2] = emissive[3] = 0.0;
 }
 
-
+/*
 int
 fgMATERIAL::append_sort_list( fgFRAGMENT *object )
 {
@@ -75,6 +75,7 @@ fgMATERIAL::append_sort_list( fgFRAGMENT *object )
        return 0;
     }
 }
+*/
 
 istream&
 operator >> ( istream& in, fgMATERIAL& m )
@@ -248,9 +249,11 @@ fgMATERIAL::render_fragments()
     }
 
     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 )
        {
@@ -354,6 +357,9 @@ fgMATERIAL_MGR::render_fragments()
 
 
 // $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.
 //
index e45b7c1fd53f6e13bb97a65e84b5c926a370a384..d8b4c9705ef5ead6db28dcaa1a0cac509dc63e79 100644 (file)
@@ -48,6 +48,7 @@ extern "C" void *memset(void *, int, size_t);
 
 #include <string>        // Standard C++ string library
 #include <map>           // STL associative "array"
+#include <vector>        // STL "array"
 
 #ifdef NEEDNAMESPACESTD
 using namespace std;
@@ -57,7 +58,13 @@ 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
@@ -79,23 +86,26 @@ private:
 
     // 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();
 
@@ -160,6 +170,9 @@ extern fgMATERIAL_MGR material_mgr;
 
 
 // $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.
 //