Moving towards increased dependence on ssg.
This commit is contained in:
parent
dec6e86f6e
commit
243b73c10b
8 changed files with 88 additions and 81 deletions
|
@ -197,7 +197,7 @@ gen_base( const Point3D& average, const container& perimeter, FGTileEntry *t)
|
||||||
xglEndList();
|
xglEndList();
|
||||||
|
|
||||||
fragment.bounding_radius = sqrt(max_dist);
|
fragment.bounding_radius = sqrt(max_dist);
|
||||||
fragment.display_list = display_list;
|
// fragment.display_list = display_list;
|
||||||
|
|
||||||
t->fragment_list.push_back(fragment);
|
t->fragment_list.push_back(fragment);
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,7 +66,7 @@ fgFRAGMENT::fgFRAGMENT ( const fgFRAGMENT & rhs ) :
|
||||||
bounding_radius( rhs.bounding_radius ),
|
bounding_radius( rhs.bounding_radius ),
|
||||||
material_ptr ( rhs.material_ptr ),
|
material_ptr ( rhs.material_ptr ),
|
||||||
tile_ptr ( rhs.tile_ptr ),
|
tile_ptr ( rhs.tile_ptr ),
|
||||||
display_list ( rhs.display_list ),
|
/* display_list ( rhs.display_list ), */
|
||||||
faces ( rhs.faces )
|
faces ( rhs.faces )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -104,7 +104,7 @@ public:
|
||||||
FGTileEntry *tile_ptr;
|
FGTileEntry *tile_ptr;
|
||||||
|
|
||||||
// OpenGL display list for fragment data
|
// OpenGL display list for fragment data
|
||||||
GLint display_list;
|
// GLint display_list;
|
||||||
|
|
||||||
// face list (this indexes into the master tile vertex list)
|
// face list (this indexes into the master tile vertex list)
|
||||||
typedef vector < fgFACE > container;
|
typedef vector < fgFACE > container;
|
||||||
|
@ -154,9 +154,9 @@ public:
|
||||||
faces.erase( faces.begin(), faces.end() );
|
faces.erase( faces.begin(), faces.end() );
|
||||||
}
|
}
|
||||||
|
|
||||||
int deleteDisplayList() {
|
// int deleteDisplayList() {
|
||||||
xglDeleteLists( display_list, 1 ); return 0;
|
// xglDeleteLists( display_list, 1 ); return 0;
|
||||||
}
|
// }
|
||||||
|
|
||||||
friend bool operator== ( const fgFRAGMENT & lhs, const fgFRAGMENT & rhs );
|
friend bool operator== ( const fgFRAGMENT & lhs, const fgFRAGMENT & rhs );
|
||||||
};
|
};
|
||||||
|
|
|
@ -76,6 +76,10 @@ fgMATERIAL_MGR::fgMATERIAL_MGR ( void ) {
|
||||||
void
|
void
|
||||||
FGMaterialSlot::render_fragments()
|
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();
|
int tris_rendered = current_view.get_tris_rendered();
|
||||||
|
|
||||||
// cout << "rendering " + texture_name + " = " << list_size << "\n";
|
// cout << "rendering " + texture_name + " = " << list_size << "\n";
|
||||||
|
@ -117,7 +121,7 @@ FGMaterialSlot::render_fragments()
|
||||||
|
|
||||||
// Woohoo!!! We finally get to draw something!
|
// Woohoo!!! We finally get to draw something!
|
||||||
// printf(" display_list = %d\n", frag_ptr->display_list);
|
// 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 );
|
current_view.set_tris_rendered( tris_rendered );
|
||||||
|
|
|
@ -29,14 +29,14 @@
|
||||||
# include <math.h>
|
# include <math.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_WINDOWS_H
|
// #ifdef HAVE_WINDOWS_H
|
||||||
# include <windows.h>
|
// # include <windows.h>
|
||||||
#endif
|
// #endif
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <GL/glut.h>
|
// #include <GL/glut.h>
|
||||||
#include <XGL/xgl.h>
|
// #include <XGL/xgl.h>
|
||||||
|
|
||||||
// #if defined ( __sun__ )
|
// #if defined ( __sun__ )
|
||||||
// extern "C" void *memmove(void *, const void *, size_t);
|
// extern "C" void *memmove(void *, const void *, size_t);
|
||||||
|
@ -134,14 +134,14 @@ static Point3D calc_tex_coords(const Point3D& node, const Point3D& ref) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Load a .obj file and build the GL fragment list
|
// Load a .obj file and build the fragment list
|
||||||
ssgBranch *fgObjLoad( const string& path, FGTileEntry *t) {
|
ssgBranch *fgObjLoad( const string& path, FGTileEntry *t) {
|
||||||
fgFRAGMENT fragment;
|
fgFRAGMENT fragment;
|
||||||
Point3D pp;
|
Point3D pp;
|
||||||
double approx_normal[3], normal[3] /*, scale = 0.0 */;
|
double approx_normal[3] /*, normal[3], scale = 0.0 */;
|
||||||
// double x, y, z, xmax, xmin, ymax, ymin, zmax, zmin;
|
// double x, y, z, xmax, xmin, ymax, ymin, zmax, zmin;
|
||||||
// GLfloat sgenparams[] = { 1.0, 0.0, 0.0, 0.0 };
|
// GLfloat sgenparams[] = { 1.0, 0.0, 0.0, 0.0 };
|
||||||
GLint display_list = 0;
|
// GLint display_list = 0;
|
||||||
int shading;
|
int shading;
|
||||||
bool in_fragment = false, in_faces = false;
|
bool in_fragment = false, in_faces = false;
|
||||||
int vncount, vtcount;
|
int vncount, vtcount;
|
||||||
|
@ -228,7 +228,7 @@ ssgBranch *fgObjLoad( const string& path, FGTileEntry *t) {
|
||||||
// shared_done true and build the ssg shared lists
|
// shared_done true and build the ssg shared lists
|
||||||
if ( ! shared_done ) {
|
if ( ! shared_done ) {
|
||||||
// sanity check
|
// sanity check
|
||||||
if ( nodes.size() != vncount ) {
|
if ( (int)nodes.size() != vncount ) {
|
||||||
FG_LOG( FG_TERRAIN, FG_ALERT,
|
FG_LOG( FG_TERRAIN, FG_ALERT,
|
||||||
"Tile has mismatched nodes and normals: "
|
"Tile has mismatched nodes and normals: "
|
||||||
<< path );
|
<< path );
|
||||||
|
@ -257,18 +257,18 @@ ssgBranch *fgObjLoad( const string& path, FGTileEntry *t) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// series of individual triangles
|
// series of individual triangles
|
||||||
if ( in_faces ) {
|
// if ( in_faces ) {
|
||||||
xglEnd();
|
// xglEnd();
|
||||||
}
|
// }
|
||||||
|
|
||||||
// this also signals the start of a new fragment
|
// this also signals the start of a new fragment
|
||||||
if ( in_fragment ) {
|
if ( in_fragment ) {
|
||||||
// close out the previous structure and start the next
|
// close out the previous structure and start the next
|
||||||
xglEndList();
|
// xglEndList();
|
||||||
// printf("xglEnd(); xglEndList();\n");
|
// printf("xglEnd(); xglEndList();\n");
|
||||||
|
|
||||||
// update fragment
|
// update fragment
|
||||||
fragment.display_list = display_list;
|
// fragment.display_list = display_list;
|
||||||
|
|
||||||
// push this fragment onto the tile's object list
|
// push this fragment onto the tile's object list
|
||||||
t->fragment_list.push_back(fragment);
|
t->fragment_list.push_back(fragment);
|
||||||
|
@ -278,8 +278,8 @@ ssgBranch *fgObjLoad( const string& path, FGTileEntry *t) {
|
||||||
|
|
||||||
// printf("start of fragment (usemtl)\n");
|
// printf("start of fragment (usemtl)\n");
|
||||||
|
|
||||||
display_list = xglGenLists(1);
|
// display_list = xglGenLists(1);
|
||||||
xglNewList(display_list, GL_COMPILE);
|
// xglNewList(display_list, GL_COMPILE);
|
||||||
// printf("xglGenLists(); xglNewList();\n");
|
// printf("xglGenLists(); xglNewList();\n");
|
||||||
in_faces = false;
|
in_faces = false;
|
||||||
|
|
||||||
|
@ -383,7 +383,7 @@ ssgBranch *fgObjLoad( const string& path, FGTileEntry *t) {
|
||||||
|
|
||||||
// fgPrintf( FG_TERRAIN, FG_DEBUG, "(t) = ");
|
// fgPrintf( FG_TERRAIN, FG_DEBUG, "(t) = ");
|
||||||
|
|
||||||
xglBegin(GL_TRIANGLE_STRIP);
|
// xglBegin(GL_TRIANGLE_STRIP);
|
||||||
// printf("xglBegin(tristrip) %d %d %d\n", n1, n2, n3);
|
// printf("xglBegin(tristrip) %d %d %d\n", n1, n2, n3);
|
||||||
|
|
||||||
odd = 1;
|
odd = 1;
|
||||||
|
@ -393,22 +393,22 @@ ssgBranch *fgObjLoad( const string& path, FGTileEntry *t) {
|
||||||
// Shading model is "GL_SMOOTH" so use precalculated
|
// Shading model is "GL_SMOOTH" so use precalculated
|
||||||
// (averaged) normals
|
// (averaged) normals
|
||||||
// MAT3_SCALE_VEC(normal, normals[n1], scale);
|
// MAT3_SCALE_VEC(normal, normals[n1], scale);
|
||||||
xglNormal3dv(normal);
|
// xglNormal3dv(normal);
|
||||||
pp = calc_tex_coords(nodes[n1], center);
|
pp = calc_tex_coords(nodes[n1], center);
|
||||||
xglTexCoord2f(pp.lon(), pp.lat());
|
// xglTexCoord2f(pp.lon(), pp.lat());
|
||||||
xglVertex3dv(nodes[n1].get_n());
|
// xglVertex3dv(nodes[n1].get_n());
|
||||||
|
|
||||||
// MAT3_SCALE_VEC(normal, normals[n2], scale);
|
// MAT3_SCALE_VEC(normal, normals[n2], scale);
|
||||||
xglNormal3dv(normal);
|
// xglNormal3dv(normal);
|
||||||
pp = calc_tex_coords(nodes[n2], center);
|
pp = calc_tex_coords(nodes[n2], center);
|
||||||
xglTexCoord2f(pp.lon(), pp.lat());
|
// xglTexCoord2f(pp.lon(), pp.lat());
|
||||||
xglVertex3dv(nodes[n2].get_n());
|
// xglVertex3dv(nodes[n2].get_n());
|
||||||
|
|
||||||
// MAT3_SCALE_VEC(normal, normals[n3], scale);
|
// MAT3_SCALE_VEC(normal, normals[n3], scale);
|
||||||
xglNormal3dv(normal);
|
// xglNormal3dv(normal);
|
||||||
pp = calc_tex_coords(nodes[n3], center);
|
pp = calc_tex_coords(nodes[n3], center);
|
||||||
xglTexCoord2f(pp.lon(), pp.lat());
|
// xglTexCoord2f(pp.lon(), pp.lat());
|
||||||
xglVertex3dv(nodes[n3].get_n());
|
// xglVertex3dv(nodes[n3].get_n());
|
||||||
} else {
|
} else {
|
||||||
// Shading model is "GL_FLAT" so calculate per face
|
// Shading model is "GL_FLAT" so calculate per face
|
||||||
// normals on the fly.
|
// normals on the fly.
|
||||||
|
@ -420,19 +420,19 @@ ssgBranch *fgObjLoad( const string& path, FGTileEntry *t) {
|
||||||
nodes[n3], approx_normal);
|
nodes[n3], approx_normal);
|
||||||
}
|
}
|
||||||
// MAT3_SCALE_VEC(normal, approx_normal, scale);
|
// MAT3_SCALE_VEC(normal, approx_normal, scale);
|
||||||
xglNormal3dv(normal);
|
// xglNormal3dv(normal);
|
||||||
|
|
||||||
pp = calc_tex_coords(nodes[n1], center);
|
pp = calc_tex_coords(nodes[n1], center);
|
||||||
xglTexCoord2f(pp.lon(), pp.lat());
|
// xglTexCoord2f(pp.lon(), pp.lat());
|
||||||
xglVertex3dv(nodes[n1].get_n());
|
// xglVertex3dv(nodes[n1].get_n());
|
||||||
|
|
||||||
pp = calc_tex_coords(nodes[n2], center);
|
pp = calc_tex_coords(nodes[n2], center);
|
||||||
xglTexCoord2f(pp.lon(), pp.lat());
|
// xglTexCoord2f(pp.lon(), pp.lat());
|
||||||
xglVertex3dv(nodes[n2].get_n());
|
// xglVertex3dv(nodes[n2].get_n());
|
||||||
|
|
||||||
pp = calc_tex_coords(nodes[n3], center);
|
pp = calc_tex_coords(nodes[n3], center);
|
||||||
xglTexCoord2f(pp.lon(), pp.lat());
|
// xglTexCoord2f(pp.lon(), pp.lat());
|
||||||
xglVertex3dv(nodes[n3].get_n());
|
// xglVertex3dv(nodes[n3].get_n());
|
||||||
}
|
}
|
||||||
// printf("some normals, texcoords, and vertices\n");
|
// printf("some normals, texcoords, and vertices\n");
|
||||||
|
|
||||||
|
@ -465,10 +465,10 @@ ssgBranch *fgObjLoad( const string& path, FGTileEntry *t) {
|
||||||
approx_normal);
|
approx_normal);
|
||||||
// MAT3_SCALE_VEC(normal, approx_normal, scale);
|
// MAT3_SCALE_VEC(normal, approx_normal, scale);
|
||||||
}
|
}
|
||||||
xglNormal3dv(normal);
|
// xglNormal3dv(normal);
|
||||||
pp = calc_tex_coords(nodes[n4], center);
|
pp = calc_tex_coords(nodes[n4], center);
|
||||||
xglTexCoord2f(pp.lon(), pp.lat());
|
// xglTexCoord2f(pp.lon(), pp.lat());
|
||||||
xglVertex3dv(nodes[n4].get_n());
|
// xglVertex3dv(nodes[n4].get_n());
|
||||||
|
|
||||||
odd = 1 - odd;
|
odd = 1 - odd;
|
||||||
last1 = n3;
|
last1 = n3;
|
||||||
|
@ -482,11 +482,11 @@ ssgBranch *fgObjLoad( const string& path, FGTileEntry *t) {
|
||||||
fan_vertices.clear();
|
fan_vertices.clear();
|
||||||
fan_tex_coords.clear();
|
fan_tex_coords.clear();
|
||||||
|
|
||||||
xglBegin(GL_TRIANGLE_FAN);
|
// xglBegin(GL_TRIANGLE_FAN);
|
||||||
|
|
||||||
in >> n1;
|
in >> n1;
|
||||||
fan_vertices.push_back( n1 );
|
fan_vertices.push_back( n1 );
|
||||||
xglNormal3dv(normals[n1]);
|
// xglNormal3dv(normals[n1]);
|
||||||
if ( in.get( c ) && c == '/' ) {
|
if ( in.get( c ) && c == '/' ) {
|
||||||
in >> tex;
|
in >> tex;
|
||||||
fan_tex_coords.push_back( tex );
|
fan_tex_coords.push_back( tex );
|
||||||
|
@ -496,12 +496,12 @@ ssgBranch *fgObjLoad( const string& path, FGTileEntry *t) {
|
||||||
in.putback( c );
|
in.putback( c );
|
||||||
pp = calc_tex_coords(nodes[n1], center);
|
pp = calc_tex_coords(nodes[n1], center);
|
||||||
}
|
}
|
||||||
xglTexCoord2f(pp.x(), pp.y());
|
// xglTexCoord2f(pp.x(), pp.y());
|
||||||
xglVertex3dv(nodes[n1].get_n());
|
// xglVertex3dv(nodes[n1].get_n());
|
||||||
|
|
||||||
in >> n2;
|
in >> n2;
|
||||||
fan_vertices.push_back( n2 );
|
fan_vertices.push_back( n2 );
|
||||||
xglNormal3dv(normals[n2]);
|
// xglNormal3dv(normals[n2]);
|
||||||
if ( in.get( c ) && c == '/' ) {
|
if ( in.get( c ) && c == '/' ) {
|
||||||
in >> tex;
|
in >> tex;
|
||||||
fan_tex_coords.push_back( tex );
|
fan_tex_coords.push_back( tex );
|
||||||
|
@ -511,8 +511,8 @@ ssgBranch *fgObjLoad( const string& path, FGTileEntry *t) {
|
||||||
in.putback( c );
|
in.putback( c );
|
||||||
pp = calc_tex_coords(nodes[n2], center);
|
pp = calc_tex_coords(nodes[n2], center);
|
||||||
}
|
}
|
||||||
xglTexCoord2f(pp.x(), pp.y());
|
// xglTexCoord2f(pp.x(), pp.y());
|
||||||
xglVertex3dv(nodes[n2].get_n());
|
// xglVertex3dv(nodes[n2].get_n());
|
||||||
|
|
||||||
// read all subsequent numbers until next thing isn't a number
|
// read all subsequent numbers until next thing isn't a number
|
||||||
while ( true ) {
|
while ( true ) {
|
||||||
|
@ -534,7 +534,7 @@ ssgBranch *fgObjLoad( const string& path, FGTileEntry *t) {
|
||||||
// cout << " triangle = "
|
// cout << " triangle = "
|
||||||
// << n1 << "," << n2 << "," << n3
|
// << n1 << "," << n2 << "," << n3
|
||||||
// << endl;
|
// << endl;
|
||||||
xglNormal3dv(normals[n3]);
|
// xglNormal3dv(normals[n3]);
|
||||||
if ( in.get( c ) && c == '/' ) {
|
if ( in.get( c ) && c == '/' ) {
|
||||||
in >> tex;
|
in >> tex;
|
||||||
fan_tex_coords.push_back( tex );
|
fan_tex_coords.push_back( tex );
|
||||||
|
@ -544,14 +544,14 @@ ssgBranch *fgObjLoad( const string& path, FGTileEntry *t) {
|
||||||
in.putback( c );
|
in.putback( c );
|
||||||
pp = calc_tex_coords(nodes[n3], center);
|
pp = calc_tex_coords(nodes[n3], center);
|
||||||
}
|
}
|
||||||
xglTexCoord2f(pp.x(), pp.y());
|
// xglTexCoord2f(pp.x(), pp.y());
|
||||||
xglVertex3dv(nodes[n3].get_n());
|
// xglVertex3dv(nodes[n3].get_n());
|
||||||
|
|
||||||
fragment.add_face(n1, n2, n3);
|
fragment.add_face(n1, n2, n3);
|
||||||
n2 = n3;
|
n2 = n3;
|
||||||
}
|
}
|
||||||
|
|
||||||
xglEnd();
|
// xglEnd();
|
||||||
|
|
||||||
// build the ssg entity
|
// build the ssg entity
|
||||||
unsigned short *vindex =
|
unsigned short *vindex =
|
||||||
|
@ -578,7 +578,7 @@ ssgBranch *fgObjLoad( const string& path, FGTileEntry *t) {
|
||||||
// unoptimized face
|
// unoptimized face
|
||||||
|
|
||||||
if ( !in_faces ) {
|
if ( !in_faces ) {
|
||||||
xglBegin(GL_TRIANGLES);
|
// xglBegin(GL_TRIANGLES);
|
||||||
// printf("xglBegin(triangles)\n");
|
// printf("xglBegin(triangles)\n");
|
||||||
in_faces = true;
|
in_faces = true;
|
||||||
}
|
}
|
||||||
|
@ -588,20 +588,20 @@ ssgBranch *fgObjLoad( const string& path, FGTileEntry *t) {
|
||||||
fragment.add_face(n1, n2, n3);
|
fragment.add_face(n1, n2, n3);
|
||||||
|
|
||||||
// xglNormal3d(normals[n1][0], normals[n1][1], normals[n1][2]);
|
// xglNormal3d(normals[n1][0], normals[n1][1], normals[n1][2]);
|
||||||
xglNormal3dv(normals[n1]);
|
// xglNormal3dv(normals[n1]);
|
||||||
pp = calc_tex_coords(nodes[n1], center);
|
pp = calc_tex_coords(nodes[n1], center);
|
||||||
xglTexCoord2f(pp.lon(), pp.lat());
|
// xglTexCoord2f(pp.lon(), pp.lat());
|
||||||
xglVertex3dv(nodes[n1].get_n());
|
// xglVertex3dv(nodes[n1].get_n());
|
||||||
|
|
||||||
xglNormal3dv(normals[n2]);
|
// xglNormal3dv(normals[n2]);
|
||||||
pp = calc_tex_coords(nodes[n2], center);
|
pp = calc_tex_coords(nodes[n2], center);
|
||||||
xglTexCoord2f(pp.lon(), pp.lat());
|
// xglTexCoord2f(pp.lon(), pp.lat());
|
||||||
xglVertex3dv(nodes[n2].get_n());
|
// xglVertex3dv(nodes[n2].get_n());
|
||||||
|
|
||||||
xglNormal3dv(normals[n3]);
|
// xglNormal3dv(normals[n3]);
|
||||||
pp = calc_tex_coords(nodes[n3], center);
|
pp = calc_tex_coords(nodes[n3], center);
|
||||||
xglTexCoord2f(pp.lon(), pp.lat());
|
// xglTexCoord2f(pp.lon(), pp.lat());
|
||||||
xglVertex3dv(nodes[n3].get_n());
|
// xglVertex3dv(nodes[n3].get_n());
|
||||||
// printf("some normals, texcoords, and vertices (tris)\n");
|
// printf("some normals, texcoords, and vertices (tris)\n");
|
||||||
} else if ( token == "q" ) {
|
} else if ( token == "q" ) {
|
||||||
// continue a triangle strip
|
// continue a triangle strip
|
||||||
|
@ -646,11 +646,11 @@ ssgBranch *fgObjLoad( const string& path, FGTileEntry *t) {
|
||||||
}
|
}
|
||||||
// MAT3_SCALE_VEC(normal, approx_normal, scale);
|
// MAT3_SCALE_VEC(normal, approx_normal, scale);
|
||||||
}
|
}
|
||||||
xglNormal3dv(normal);
|
// xglNormal3dv(normal);
|
||||||
|
|
||||||
pp = calc_tex_coords(nodes[n1], center);
|
pp = calc_tex_coords(nodes[n1], center);
|
||||||
xglTexCoord2f(pp.lon(), pp.lat());
|
// xglTexCoord2f(pp.lon(), pp.lat());
|
||||||
xglVertex3dv(nodes[n1].get_n());
|
// xglVertex3dv(nodes[n1].get_n());
|
||||||
// printf("a normal, texcoord, and vertex (4th)\n");
|
// printf("a normal, texcoord, and vertex (4th)\n");
|
||||||
|
|
||||||
odd = 1 - odd;
|
odd = 1 - odd;
|
||||||
|
@ -680,11 +680,11 @@ ssgBranch *fgObjLoad( const string& path, FGTileEntry *t) {
|
||||||
}
|
}
|
||||||
// MAT3_SCALE_VEC(normal, approx_normal, scale);
|
// MAT3_SCALE_VEC(normal, approx_normal, scale);
|
||||||
}
|
}
|
||||||
xglNormal3dv(normal);
|
// xglNormal3dv(normal);
|
||||||
|
|
||||||
pp = calc_tex_coords(nodes[n2], center);
|
pp = calc_tex_coords(nodes[n2], center);
|
||||||
xglTexCoord2f(pp.lon(), pp.lat());
|
// xglTexCoord2f(pp.lon(), pp.lat());
|
||||||
xglVertex3dv(nodes[n2].get_n());
|
// xglVertex3dv(nodes[n2].get_n());
|
||||||
// printf("a normal, texcoord, and vertex (4th)\n");
|
// printf("a normal, texcoord, and vertex (4th)\n");
|
||||||
|
|
||||||
odd = 1 -odd;
|
odd = 1 -odd;
|
||||||
|
@ -708,12 +708,12 @@ ssgBranch *fgObjLoad( const string& path, FGTileEntry *t) {
|
||||||
|
|
||||||
if ( in_fragment ) {
|
if ( in_fragment ) {
|
||||||
// close out the previous structure and start the next
|
// close out the previous structure and start the next
|
||||||
xglEnd();
|
// xglEnd();
|
||||||
xglEndList();
|
// xglEndList();
|
||||||
// printf("xglEnd(); xglEndList();\n");
|
// printf("xglEnd(); xglEndList();\n");
|
||||||
|
|
||||||
// update fragment
|
// update fragment
|
||||||
fragment.display_list = display_list;
|
// fragment.display_list = display_list;
|
||||||
|
|
||||||
// push this fragment onto the tile's object list
|
// push this fragment onto the tile's object list
|
||||||
t->fragment_list.push_back(fragment);
|
t->fragment_list.push_back(fragment);
|
||||||
|
|
|
@ -36,11 +36,11 @@
|
||||||
|
|
||||||
#include <Include/compiler.h>
|
#include <Include/compiler.h>
|
||||||
|
|
||||||
#ifdef HAVE_WINDOWS_H
|
// #ifdef HAVE_WINDOWS_H
|
||||||
# include <windows.h>
|
// # include <windows.h>
|
||||||
#endif
|
// #endif
|
||||||
|
|
||||||
#include <GL/glut.h>
|
// #include <GL/glut.h>
|
||||||
|
|
||||||
#include STL_STRING
|
#include STL_STRING
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@
|
||||||
FG_USING_STD(string);
|
FG_USING_STD(string);
|
||||||
|
|
||||||
|
|
||||||
// Load a .obj file and build the GL fragment list
|
// Load a .obj file and build the fragment list
|
||||||
ssgBranch *fgObjLoad(const string& path, FGTileEntry *tile);
|
ssgBranch *fgObjLoad(const string& path, FGTileEntry *tile);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -73,8 +73,8 @@ FGTileEntry::free_tile()
|
||||||
// delete fragment list
|
// delete fragment list
|
||||||
FG_LOG( FG_TERRAIN, FG_INFO,
|
FG_LOG( FG_TERRAIN, FG_INFO,
|
||||||
" deleting " << fragment_list.size() << " fragments" );
|
" deleting " << fragment_list.size() << " fragments" );
|
||||||
for_each( begin(), end(),
|
// for_each( begin(), end(),
|
||||||
mem_fun_ref( &fgFRAGMENT::deleteDisplayList ));
|
// mem_fun_ref( &fgFRAGMENT::deleteDisplayList ));
|
||||||
fragment_list.erase( begin(), end() );
|
fragment_list.erase( begin(), end() );
|
||||||
|
|
||||||
// delete the ssg used structures
|
// delete the ssg used structures
|
||||||
|
|
|
@ -845,6 +845,9 @@ void FGTileMgr::prep_ssg_nodes( void ) {
|
||||||
|
|
||||||
// Render the local tiles
|
// Render the local tiles
|
||||||
void FGTileMgr::render( void ) {
|
void FGTileMgr::render( void ) {
|
||||||
|
FG_LOG( FG_TERRAIN, FG_ALERT,
|
||||||
|
"FGTileMgr::render() is depricated. We shouldn't be here!" );
|
||||||
|
|
||||||
FGInterface *f;
|
FGInterface *f;
|
||||||
FGTileCache *c;
|
FGTileCache *c;
|
||||||
FGTileEntry *t;
|
FGTileEntry *t;
|
||||||
|
@ -901,7 +904,7 @@ void FGTileMgr::render( void ) {
|
||||||
for ( ; current != last; ++current ) {
|
for ( ; current != last; ++current ) {
|
||||||
frag_ptr = &(*current);
|
frag_ptr = &(*current);
|
||||||
|
|
||||||
if ( frag_ptr->display_list >= 0 ) {
|
if ( false /* frag_ptr->display_list >= 0 */ ) {
|
||||||
// Fine (fragment based) culling
|
// Fine (fragment based) culling
|
||||||
frag_offset = frag_ptr->center - scenery.center;
|
frag_offset = frag_ptr->center - scenery.center;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue