1
0
Fork 0
flightgear/src/Main/renderer.hxx
curt 40170cb722 The view frustum is defined in plib apps using calls to ssgSetFOV() and
ssgSetNearFar().  This by default creates a symmetric view frustum which is
typically what an application wants.

However, to get control of the view frustum in order to build support for
asymmetric view frustums, we need to wrap these calls with a bit of our own
logic.

This set of changes wraps all calls to ssgSetFOV() and ssgSetNearFar() with
FGRenderer methods.

I also standardized how the FGRenderer class is handled in globals.[ch]xx.
This led to some cascading changes in a variety of source files.

As I was working my way through the changes, I fixed a few warnings along
the way.
2005-02-25 19:41:53 +00:00

49 lines
1.2 KiB
C++

#ifndef __FG_RENDERER_HXX
#define __FG_RENDERER_HXX 1
#include <simgear/screen/extensions.hxx>
#include <simgear/scene/sky/sky.hxx>
#define FG_ENABLE_MULTIPASS_CLOUDS 1
class SGSky;
extern SGSky *thesky;
extern glPointParameterfProc glPointParameterfPtr;
extern glPointParameterfvProc glPointParameterfvPtr;
extern bool glPointParameterIsSupported;
class FGRenderer {
public:
FGRenderer();
~FGRenderer();
void init();
void build_states();
static void resize(int width, int height );
// calling update( refresh_camera_settings = false ) will not
// touch window or camera settings. This is useful for the tiled
// renderer which needs to set the view frustum itself.
static void update( bool refresh_camera_settings );
inline static void update() { update( true ); }
/** FlightGear code should use this routine to set the FOV rather
* than calling the ssg routine directly
*/
static void setFOV( float w, float h );
/** FlightGear code should use this routine to set the Near/Far
* clip planes rather than calling the ssg routine directly
*/
static void setNearFar( float n, float f );
};
#endif