49 lines · 1.4 KB · C++
RawDownload
////  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 "Stars.h" #include <NumericalConstants.h> #include "InterfaceConfig.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 * tanf(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 = atanf(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);}