Playing with glPointParameterfEXT.
This commit is contained in:
parent
050f44adc8
commit
55b7dc661e
1 changed files with 37 additions and 14 deletions
|
@ -133,9 +133,24 @@ SG_USING_STD(endl);
|
||||||
#include <FDM/ADA.hxx>
|
#include <FDM/ADA.hxx>
|
||||||
#include <Scenery/tileentry.hxx>
|
#include <Scenery/tileentry.hxx>
|
||||||
|
|
||||||
#if ( WIN32 )
|
|
||||||
|
// #define FG_EXPERIMENTAL_LIGHTING
|
||||||
|
#ifdef WIN32
|
||||||
|
typedef void (APIENTRY * PFNGLPOINTPARAMETERFEXTPROC)(GLenum pname,
|
||||||
|
GLfloat param);
|
||||||
|
typedef void (APIENTRY * PFNGLPOINTPARAMETERFVEXTPROC)(GLenum pname,
|
||||||
|
const GLfloat *params);
|
||||||
|
|
||||||
PFNGLPOINTPARAMETERFEXTPROC glPointParameterfEXT = 0;
|
PFNGLPOINTPARAMETERFEXTPROC glPointParameterfEXT = 0;
|
||||||
PFNGLPOINTPARAMETERFVEXTPROC glPointParameterfvEXT = 0;
|
PFNGLPOINTPARAMETERFVEXTPROC glPointParameterfvEXT = 0;
|
||||||
|
#elif linux
|
||||||
|
#include <GL/glx.h>
|
||||||
|
|
||||||
|
typedef void (* OpenGLFuncExt)(GLenum pname, GLfloat param);
|
||||||
|
typedef void (* OpenGLFuncExtv)(GLenum pname, const GLfloat *params);
|
||||||
|
|
||||||
|
OpenGLFuncExt glPointParameterfEXT = 0;
|
||||||
|
OpenGLFuncExtv glPointParameterfvEXT = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
float default_attenuation[3] = {1.0, 0.0, 0.0};
|
float default_attenuation[3] = {1.0, 0.0, 0.0};
|
||||||
|
@ -719,32 +734,24 @@ void fgRenderFrame() {
|
||||||
// Set punch through fog density
|
// Set punch through fog density
|
||||||
glFogf (GL_FOG_DENSITY, fog_exp2_punch_through);
|
glFogf (GL_FOG_DENSITY, fog_exp2_punch_through);
|
||||||
|
|
||||||
// #define FG_EXPERIMENTAL_LIGHTING
|
ssgSetNearFar( scene_nearplane, scene_farplane );
|
||||||
|
ssgCullAndDraw( globals->get_scenery()->get_gnd_lights_root() );
|
||||||
|
|
||||||
#ifdef FG_EXPERIMENTAL_LIGHTING
|
#ifdef FG_EXPERIMENTAL_LIGHTING
|
||||||
// Enable states for drawing points with GL_extension
|
// Enable states for drawing points with GL_extension
|
||||||
if (glutExtensionSupported("GL_EXT_point_parameters")) {
|
if (glutExtensionSupported("GL_EXT_point_parameters")) {
|
||||||
glEnable(GL_POINT_SMOOTH);
|
glEnable(GL_POINT_SMOOTH);
|
||||||
float quadratic[3] = {1.0, 0.01, 0.00001};
|
float quadratic[3] = {1.0, 0.001, 0.0000001};
|
||||||
// get the address of our OpenGL extensions
|
|
||||||
#if defined(WIN32)
|
|
||||||
glPointParameterfEXT = (PFNGLPOINTPARAMETERFEXTPROC)
|
|
||||||
wglGetProcAddress("glPointParameterfEXT");
|
|
||||||
glPointParameterfvEXT = (PFNGLPOINTPARAMETERFVEXTPROC)
|
|
||||||
wglGetProcAddress("glPointParameterfvEXT");
|
|
||||||
#endif
|
|
||||||
// makes the points fade as they move away
|
// makes the points fade as they move away
|
||||||
glPointParameterfvEXT(GL_DISTANCE_ATTENUATION_EXT, quadratic);
|
glPointParameterfvEXT(GL_DISTANCE_ATTENUATION_EXT, quadratic);
|
||||||
glPointParameterfEXT(GL_POINT_SIZE_MIN_EXT, 1.0);
|
glPointParameterfEXT(GL_POINT_SIZE_MIN_EXT, 1.0);
|
||||||
glPointSize(8.0);
|
glPointSize(4.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// blending function for runway lights
|
// blending function for runway lights
|
||||||
glBlendFunc ( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) ;
|
glBlendFunc ( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) ;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ssgSetNearFar( scene_nearplane, scene_farplane );
|
|
||||||
ssgCullAndDraw( globals->get_scenery()->get_gnd_lights_root() );
|
|
||||||
|
|
||||||
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
|
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
|
||||||
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
|
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
|
||||||
glEnable(GL_TEXTURE_GEN_S);
|
glEnable(GL_TEXTURE_GEN_S);
|
||||||
|
@ -772,6 +779,7 @@ void fgRenderFrame() {
|
||||||
}
|
}
|
||||||
|
|
||||||
glPointSize(1.0);
|
glPointSize(1.0);
|
||||||
|
glDisable(GL_POINT_SMOOTH);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if ( fgGetBool("/sim/rendering/skyblend") ) {
|
if ( fgGetBool("/sim/rendering/skyblend") ) {
|
||||||
|
@ -1567,6 +1575,21 @@ int mainLoop( int argc, char **argv ) {
|
||||||
glTexEnvf( GL_TEXTURE_FILTER_CONTROL_EXT, GL_TEXTURE_LOD_BIAS_EXT, -0.5 ) ;
|
glTexEnvf( GL_TEXTURE_FILTER_CONTROL_EXT, GL_TEXTURE_LOD_BIAS_EXT, -0.5 ) ;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef FG_EXPERIMENTAL_LIGHTING
|
||||||
|
// get the address of our OpenGL extensions
|
||||||
|
# ifdef WIN32
|
||||||
|
glPointParameterfEXT = (PFNGLPOINTPARAMETERFEXTPROC)
|
||||||
|
wglGetProcAddress("glPointParameterfEXT");
|
||||||
|
glPointParameterfvEXT = (PFNGLPOINTPARAMETERFVEXTPROC)
|
||||||
|
wglGetProcAddress("glPointParameterfvEXT");
|
||||||
|
# elif linux
|
||||||
|
glPointParameterfEXT = (OpenGLFuncExt)
|
||||||
|
glXGetProcAddressARB((GLubyte *)"glPointParameterfEXT");
|
||||||
|
glPointParameterfvEXT = (OpenGLFuncExtv)
|
||||||
|
glXGetProcAddressARB((GLubyte *)"glPointParameterfvEXT");
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
// Set position relative to glide slope if requested
|
// Set position relative to glide slope if requested
|
||||||
fgSetPosFromGlideSlope();
|
fgSetPosFromGlideSlope();
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue