Changes from NHV to make the code more dynamic with fewer hard coded limits.
This commit is contained in:
parent
71b78dc87c
commit
18b093927f
2 changed files with 32 additions and 13 deletions
|
@ -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.
|
||||
//
|
||||
|
|
|
@ -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.
|
||||
//
|
||||
|
|
Loading…
Add table
Reference in a new issue