40170cb722
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.
49 lines
1.2 KiB
C++
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
|