mirror of
https://github.com/overte-org/overte.git
synced 2025-04-25 23:16:20 +02:00
Instead of calling glutSolidSphere, just call Application::getInstance()->getGeometryCache()->renderSphere(...) - replaced all the instances of "glutSolidSphere" - Changed the atmosphere shaders so instead of drawing a sphere of the size of the atmosphere, we draw a unit sphere, the vertices get scaled at the right radius in th vertex shader using fOuterRadius
49 lines
1.4 KiB
C++
49 lines
1.4 KiB
C++
//
|
|
// Stars.cpp
|
|
// interface/src
|
|
//
|
|
// Created by Tobias Schwinger on 3/22/13.
|
|
// Copyright 2013 High Fidelity, Inc.
|
|
//
|
|
// Distributed under the Apache License, Version 2.0.
|
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
//
|
|
|
|
#include "InterfaceConfig.h"
|
|
#include "Stars.h"
|
|
|
|
#include "starfield/Controller.h"
|
|
|
|
Stars::Stars() :
|
|
_controller(0l), _starsLoaded(false) {
|
|
_controller = new starfield::Controller;
|
|
}
|
|
|
|
Stars::~Stars() {
|
|
delete _controller;
|
|
}
|
|
|
|
bool Stars::generate(unsigned numStars, unsigned seed) {
|
|
_starsLoaded = _controller->computeStars(numStars, seed);
|
|
return _starsLoaded;
|
|
}
|
|
|
|
bool Stars::setResolution(unsigned k) {
|
|
return _controller->setResolution(k);
|
|
}
|
|
|
|
void Stars::render(float fovY, float aspect, float nearZ, float alpha) {
|
|
// determine length of screen diagonal from quadrant height and aspect ratio
|
|
float quadrantHeight = nearZ * tan(RADIANS_PER_DEGREE * fovY * 0.5f);
|
|
float halfDiagonal = sqrt(quadrantHeight * quadrantHeight * (1.0f + aspect * aspect));
|
|
|
|
// determine fov angle in respect to the diagonal
|
|
float fovDiagonal = atan(halfDiagonal / nearZ) * 2.0f;
|
|
|
|
// pull the modelview matrix off the GL stack
|
|
glm::mat4 view; glGetFloatv(GL_MODELVIEW_MATRIX, glm::value_ptr(view));
|
|
|
|
_controller->render(fovDiagonal, aspect, glm::affineInverse(view), alpha);
|
|
}
|
|
|
|
|