Straightened out mess of rendering flags.

ver1_5_1
Chris Laurel 2001-04-22 22:37:35 +00:00
parent 7e1ee732bf
commit ccd60eeda4
4 changed files with 62 additions and 43 deletions

View File

@ -59,12 +59,12 @@ Renderer::Renderer() :
fov(FOV),
renderMode(GL_FILL),
asterisms(NULL),
renderFlags(ShowStars | ShowPlanets),
labelMode(NoLabels),
ambientLightLevel(0.1f),
brightnessScale(1.0f / 6.0f),
brightnessBias(0.0f),
perPixelLightingEnabled(false),
cloudMappingEnabled(false),
console(NULL),
nSimultaneousTextures(1),
useRegisterCombiners(false),
@ -383,12 +383,21 @@ Console* Renderer::getConsole() const
}
int Renderer::getRenderFlags() const
{
return renderFlags;
}
void Renderer::setRenderFlags(int _renderFlags)
{
renderFlags = _renderFlags;
}
int Renderer::getLabelMode() const
{
return labelMode;
}
void Renderer::setLabelMode(int _labelMode)
{
labelMode = _labelMode;
@ -441,17 +450,6 @@ bool Renderer::perPixelLightingSupported() const
}
bool Renderer::getCloudMapping() const
{
return cloudMappingEnabled;
}
void Renderer::setCloudMapping(bool enable)
{
cloudMappingEnabled = enable;
}
void Renderer::addLabel(string text, Color color, Point3f pos)
{
double winX, winY, winZ;
@ -529,11 +527,12 @@ void Renderer::render(const Observer& observer,
glDisable(GL_LIGHTING);
glDepthMask(GL_FALSE);
glEnable(GL_BLEND);
glEnable(GL_TEXTURE_2D);
clearLabels();
renderList.clear();
if (galaxies != NULL)
if ((renderFlags & ShowGalaxies) != 0 && galaxies != NULL)
renderGalaxies(*galaxies, observer);
// Translate the camera before rendering the stars
@ -541,10 +540,11 @@ void Renderer::render(const Observer& observer,
glTranslatef(-observerPos.x, -observerPos.y, -observerPos.z);
// Render stars
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
renderStars(starDB, visset, observer);
if ((renderFlags & ShowStars) != 0)
renderStars(starDB, visset, observer);
// Render asterisms
if (asterisms != NULL)
if ((renderFlags & ShowDiagrams) != 0 && asterisms != NULL)
{
glColor4f(0.5f, 0.0, 1.0f, 0.5f);
glDisable(GL_TEXTURE_2D);
@ -1162,7 +1162,7 @@ void Renderer::renderPlanet(const Body& body,
}
if ((surface.appearanceFlags & Surface::ApplyCloudMap) != 0 &&
cloudMappingEnabled)
(renderFlags & ShowCloudMaps) != 0)
{
if (!textureManager->find(surface.cloudTexture, &cloudTex))
cloudTex = textureManager->load(surface.cloudTexture, false);
@ -1839,7 +1839,6 @@ void Renderer::renderStars(const StarDatabase& starDB,
}
}
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, starTex->getName());
renderParticles(starParticles, observer.getOrientation());
glBindTexture(GL_TEXTURE_2D, glareTex->getName());

View File

@ -58,6 +58,16 @@ class Renderer
PlanetLabels = 2,
PlanetOrbits = 4,
};
enum {
ShowNothing = 0,
ShowStars = 1,
ShowPlanets = 2,
ShowGalaxies = 4,
ShowDiagrams = 8,
ShowCloudMaps = 16,
};
int getRenderFlags() const;
void setRenderFlags(int);
int getLabelMode() const;
void setLabelMode(int);
void addLabelledStar(Star*);
@ -66,8 +76,6 @@ class Renderer
void setAmbientLightLevel(float);
bool getPerPixelLighting() const;
void setPerPixelLighting(bool);
bool getCloudMapping() const;
void setCloudMapping(bool);
bool perPixelLightingSupported() const;
float getBrightnessScale() const;
@ -165,9 +173,9 @@ class Renderer
int renderMode;
int labelMode;
int renderFlags;
float ambientLightLevel;
bool perPixelLightingEnabled;
bool cloudMappingEnabled;
float brightnessBias;
float brightnessScale;

View File

@ -119,6 +119,7 @@ static void displayGalaxyInfo(Console& console,
console << "Distance: ";
displayDistance(console, distance);
console << '\n';
console << "Type: " << galaxy.getType() << '\n';
console << "Radius: " << galaxy.getRadius() << " ly\n";
}
@ -558,7 +559,13 @@ void Simulation::computeGotoParameters(Selection& destination, JourneyParams& jp
UniversalCoord targetPosition = getSelectionPosition(selection, simTime);
Vec3d v = targetPosition - observer.getPosition();
double distanceToTarget = v.length();
double maxOrbitDistance = (selection.body != NULL) ? astro::kilometersToLightYears(5.0f * selection.body->getRadius()) : 0.5f;
double maxOrbitDistance;
if (selection.body != NULL)
maxOrbitDistance = astro::kilometersToLightYears(5.0f * selection.body->getRadius());
else if (selection.galaxy != NULL)
maxOrbitDistance = 5.0f * selection.galaxy->getRadius();
else
maxOrbitDistance = 0.5f;
double orbitDistance = (distanceToTarget > maxOrbitDistance * 10.0f) ? maxOrbitDistance : distanceToTarget * 0.1f;
v.normalize();

View File

@ -88,7 +88,6 @@ static StarNameDatabase* starNameDB = NULL;
static SolarSystemCatalog* solarSystemCatalog = NULL;
static GalaxyList* galaxies = NULL;
static AsterismList* asterisms = NULL;
static bool showAsterisms = false;
static FavoritesList* favorites = NULL;
@ -529,6 +528,19 @@ static void ToggleLabelState(int menuItem, int labelState)
}
}
static void ToggleRenderFlag(int menuItem, int renderFlag)
{
if ((GetMenuState(menuBar, menuItem, MF_BYCOMMAND) & MF_CHECKED) == 0)
{
renderer->setRenderFlags(renderer->getRenderFlags() | renderFlag);
CheckMenuItem(menuBar, menuItem, MF_CHECKED);
}
else
{
renderer->setRenderFlags(renderer->getRenderFlags() & ~renderFlag);
CheckMenuItem(menuBar, menuItem, MF_UNCHECKED);
}
}
static bool ToggleMenuItem(int menuItem)
{
@ -782,19 +794,15 @@ void handleKeyPress(int c)
break;
case 'I':
{
bool enabled = !renderer->getCloudMapping();
CheckMenuItem(menuBar, ID_RENDER_SHOWATMOSPHERES,
enabled ? MF_CHECKED : MF_UNCHECKED);
renderer->setCloudMapping(enabled);
}
ToggleRenderFlag(ID_RENDER_SHOWATMOSPHERES, Renderer::ShowCloudMaps);
break;
case 'U':
ToggleRenderFlag(ID_RENDER_SHOWGALAXIES, Renderer::ShowGalaxies);
break;
case '/':
showAsterisms = !showAsterisms;
CheckMenuItem(menuBar, ID_RENDER_SHOWCONSTELLATIONS,
showAsterisms ? MF_CHECKED : MF_UNCHECKED);
renderer->showAsterisms(showAsterisms ? asterisms : NULL);
ToggleRenderFlag(ID_RENDER_SHOWCONSTELLATIONS, Renderer::ShowDiagrams);
break;
case '~':
@ -1268,6 +1276,8 @@ int APIENTRY WinMain(HINSTANCE hInstance,
renderer->setBrightnessBias(0.0f);
renderer->setBrightnessScale(1.0f / (config->faintestVisible + 1.0f));
renderer->showAsterisms(asterisms);
// Set up the overlay
overlay = new Overlay();
overlay->setWindowSize(g_w, g_h);
@ -1624,18 +1634,13 @@ LRESULT CALLBACK MainWindowProc(HWND hWnd,
ToggleLabelState(ID_RENDER_SHOWORBITS, Renderer::PlanetOrbits);
break;
case ID_RENDER_SHOWCONSTELLATIONS:
showAsterisms = !showAsterisms;
CheckMenuItem(menuBar, ID_RENDER_SHOWCONSTELLATIONS,
showAsterisms ? MF_CHECKED : MF_UNCHECKED);
renderer->showAsterisms(showAsterisms ? asterisms : NULL);
ToggleRenderFlag(ID_RENDER_SHOWCONSTELLATIONS, Renderer::ShowDiagrams);
break;
case ID_RENDER_SHOWATMOSPHERES:
{
bool enabled = !renderer->getCloudMapping();
CheckMenuItem(menuBar, ID_RENDER_SHOWATMOSPHERES,
enabled ? MF_CHECKED : MF_UNCHECKED);
renderer->setCloudMapping(enabled);
}
ToggleRenderFlag(ID_RENDER_SHOWATMOSPHERES, Renderer::ShowCloudMaps);
break;
case ID_RENDER_SHOWGALAXIES:
ToggleRenderFlag(ID_RENDER_SHOWGALAXIES, Renderer::ShowGalaxies);
break;
case ID_RENDER_AMBIENTLIGHT_NONE: