Fixed a glTexImage2D() usage bug where width and height were mis-swapped.
Added support for --tile-radius=n option.
This commit is contained in:
parent
58eb9b9089
commit
a205e76218
3 changed files with 44 additions and 25 deletions
|
@ -86,7 +86,7 @@ int fgSceneryInit( void ) {
|
|||
}
|
||||
}
|
||||
|
||||
xglTexImage2D(GL_TEXTURE_2D, 0, 3, height, width, 0,
|
||||
xglTexImage2D(GL_TEXTURE_2D, 0, 3, width, height, 0,
|
||||
GL_RGB, GL_UNSIGNED_BYTE, texbuf);
|
||||
|
||||
return(1);
|
||||
|
@ -123,9 +123,13 @@ void fgSceneryRender( void ) {
|
|||
|
||||
|
||||
/* $Log$
|
||||
/* Revision 1.2 1998/05/02 01:52:16 curt
|
||||
/* Playing around with texture coordinates.
|
||||
/* Revision 1.3 1998/05/07 23:15:20 curt
|
||||
/* Fixed a glTexImage2D() usage bug where width and height were mis-swapped.
|
||||
/* Added support for --tile-radius=n option.
|
||||
/*
|
||||
* Revision 1.2 1998/05/02 01:52:16 curt
|
||||
* Playing around with texture coordinates.
|
||||
*
|
||||
* Revision 1.1 1998/04/30 12:35:30 curt
|
||||
* Added a command line rendering option specify smooth/flat shading.
|
||||
*
|
||||
|
|
|
@ -49,8 +49,8 @@
|
|||
|
||||
/* For best results ... i.e. to avoid tile load problems and blank areas
|
||||
*
|
||||
* FG_TILE_CACHE_SIZE >= FG_LOCAL_X_Y + 2*max(FG_LOCAL_X, FG_LOCAL_Y) + 1 */
|
||||
#define FG_TILE_CACHE_SIZE 100
|
||||
* FG_TILE_CACHE_SIZE >= (o->tile_radius + 1) ** 2 */
|
||||
#define FG_TILE_CACHE_SIZE 121
|
||||
|
||||
|
||||
/* Tile cache record */
|
||||
|
@ -88,9 +88,13 @@ void fgTileCacheEntryInfo( int index, GLint *display_list,
|
|||
|
||||
|
||||
/* $Log$
|
||||
/* Revision 1.5 1998/05/02 01:52:17 curt
|
||||
/* Playing around with texture coordinates.
|
||||
/* Revision 1.6 1998/05/07 23:15:20 curt
|
||||
/* Fixed a glTexImage2D() usage bug where width and height were mis-swapped.
|
||||
/* Added support for --tile-radius=n option.
|
||||
/*
|
||||
* Revision 1.5 1998/05/02 01:52:17 curt
|
||||
* Playing around with texture coordinates.
|
||||
*
|
||||
* Revision 1.4 1998/04/30 12:35:31 curt
|
||||
* Added a command line rendering option specify smooth/flat shading.
|
||||
*
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
/* -*- Mode: C++ -*-
|
||||
*
|
||||
* tilemgr.c -- routines to handle dynamic management of scenery tiles
|
||||
/*
|
||||
* tilemgr.cxx -- routines to handle dynamic management of scenery tiles
|
||||
*
|
||||
* Written by Curtis Olson, started January 1998.
|
||||
*
|
||||
|
@ -48,9 +47,7 @@
|
|||
#include <Main/options.hxx>
|
||||
|
||||
|
||||
#define FG_LOCAL_X 7 /* should be odd */
|
||||
#define FG_LOCAL_Y 7 /* should be odd */
|
||||
#define FG_LOCAL_X_Y 49 /* At least FG_LOCAL_X times FG_LOCAL_Y */
|
||||
#define FG_LOCAL_X_Y 81 /* max(o->tile_radius) ** 2 */
|
||||
|
||||
|
||||
/* closest (potentially viewable) tiles, centered on current tile.
|
||||
|
@ -104,9 +101,11 @@ int fgTileMgrUpdate( void ) {
|
|||
/* First time through, initialize the system and load all
|
||||
* relavant tiles */
|
||||
|
||||
fgPrintf( FG_TERRAIN, FG_DEBUG, "First time through ... \n");
|
||||
fgPrintf( FG_TERRAIN, FG_DEBUG, "Updating Tile list for %d,%d %d,%d\n",
|
||||
fgPrintf( FG_TERRAIN, FG_INFO, " First time through ... ");
|
||||
fgPrintf( FG_TERRAIN, FG_INFO, " Updating Tile list for %d,%d %d,%d\n",
|
||||
p1.lon, p1.lat, p1.x, p1.y);
|
||||
fgPrintf( FG_TERRAIN, FG_INFO, " Loading %d tiles\n",
|
||||
o->tile_radius * o->tile_radius);
|
||||
|
||||
/* wipe tile cache */
|
||||
fgTileCacheInit();
|
||||
|
@ -126,26 +125,30 @@ int fgTileMgrUpdate( void ) {
|
|||
AT ULTRA HIGH SPEEDS THIS ASSUMPTION MAY NOT BE VALID IF
|
||||
THE AIRCRAFT CAN SKIP A TILE IN A SINGLE ITERATION. */
|
||||
|
||||
fgPrintf( FG_TERRAIN, FG_INFO, "Updating Tile list for %d,%d %d,%d\n",
|
||||
p1.lon, p1.lat, p1.x, p1.y);
|
||||
|
||||
if ( (p1.lon > p_last.lon) ||
|
||||
( (p1.lon == p_last.lon) && (p1.x > p_last.x) ) ) {
|
||||
fgPrintf( FG_TERRAIN, FG_INFO, " Loading %d tiles\n",
|
||||
o->tile_radius);
|
||||
for ( j = 0; j < o->tile_radius; j++ ) {
|
||||
/* scrolling East */
|
||||
for ( i = 0; i < o->tile_radius - 1; i++ ) {
|
||||
tiles[(j*o->tile_radius) + i] =
|
||||
tiles[(j*o->tile_radius) + i + 1];
|
||||
tiles[(j*o->tile_radius) + i] = tiles[(j*o->tile_radius) + i + 1];
|
||||
}
|
||||
/* load in new column */
|
||||
fgBucketOffset(&p_last, &p2, dw + 1, j - dh);
|
||||
fgTileMgrLoadTile(&p2, &tiles[(j*o->tile_radius) +
|
||||
o->tile_radius - 1]);
|
||||
fgTileMgrLoadTile(&p2, &tiles[(j*o->tile_radius) + o->tile_radius - 1]);
|
||||
}
|
||||
} else if ( (p1.lon < p_last.lon) ||
|
||||
( (p1.lon == p_last.lon) && (p1.x < p_last.x) ) ) {
|
||||
fgPrintf( FG_TERRAIN, FG_INFO, " Loading %d tiles\n",
|
||||
o->tile_radius);
|
||||
for ( j = 0; j < o->tile_radius; j++ ) {
|
||||
/* scrolling West */
|
||||
for ( i = o->tile_radius - 1; i > 0; i-- ) {
|
||||
tiles[(j*o->tile_radius) + i] =
|
||||
tiles[(j*o->tile_radius) + i - 1];
|
||||
tiles[(j*o->tile_radius) + i] = tiles[(j*o->tile_radius) + i - 1];
|
||||
}
|
||||
/* load in new column */
|
||||
fgBucketOffset(&p_last, &p2, -dw - 1, j - dh);
|
||||
|
@ -155,6 +158,8 @@ int fgTileMgrUpdate( void ) {
|
|||
|
||||
if ( (p1.lat > p_last.lat) ||
|
||||
( (p1.lat == p_last.lat) && (p1.y > p_last.y) ) ) {
|
||||
fgPrintf( FG_TERRAIN, FG_INFO, " Loading %d tiles\n",
|
||||
o->tile_radius);
|
||||
for ( i = 0; i < o->tile_radius; i++ ) {
|
||||
/* scrolling North */
|
||||
for ( j = 0; j < o->tile_radius - 1; j++ ) {
|
||||
|
@ -167,6 +172,8 @@ int fgTileMgrUpdate( void ) {
|
|||
}
|
||||
} else if ( (p1.lat < p_last.lat) ||
|
||||
( (p1.lat == p_last.lat) && (p1.y < p_last.y) ) ) {
|
||||
fgPrintf( FG_TERRAIN, FG_INFO, " Loading %d tiles\n",
|
||||
o->tile_radius);
|
||||
for ( i = 0; i < o->tile_radius; i++ ) {
|
||||
/* scrolling South */
|
||||
for ( j = o->tile_radius - 1; j > 0; j-- ) {
|
||||
|
@ -210,7 +217,7 @@ void fgTileMgrRender( void ) {
|
|||
FG_Longitude * RAD_TO_DEG, FG_Latitude * RAD_TO_DEG,
|
||||
p.lon, p.lat, p.x, p.y, fgBucketGenIndex(&p) );
|
||||
|
||||
for ( i = 0; i < 2 * o->tile_radius; i++ ) {
|
||||
for ( i = 0; i < (o->tile_radius * o->tile_radius); i++ ) {
|
||||
index = tiles[i];
|
||||
/* fgPrintf( FG_TERRAIN, FG_DEBUG, "Index = %d\n", index); */
|
||||
fgTileCacheEntryInfo(index, &display_list, &local_ref );
|
||||
|
@ -230,9 +237,13 @@ void fgTileMgrRender( void ) {
|
|||
|
||||
|
||||
/* $Log$
|
||||
/* Revision 1.7 1998/05/06 03:16:42 curt
|
||||
/* Added an option to control square tile radius.
|
||||
/* Revision 1.8 1998/05/07 23:15:21 curt
|
||||
/* Fixed a glTexImage2D() usage bug where width and height were mis-swapped.
|
||||
/* Added support for --tile-radius=n option.
|
||||
/*
|
||||
* Revision 1.7 1998/05/06 03:16:42 curt
|
||||
* Added an option to control square tile radius.
|
||||
*
|
||||
* Revision 1.6 1998/05/02 01:52:18 curt
|
||||
* Playing around with texture coordinates.
|
||||
*
|
||||
|
|
Loading…
Reference in a new issue