cgGLGetLatestProfile(3)

NAME
cgGLGetLatestProfile - get the latest profile for a profile class

SYNOPSIS
  #include <Cg/cgGL.h>

  CGprofile cgGLGetLatestProfile( CGGLenum profileClass );

PARAMETERS

profileClass
    The class of profile that will be returned. Must be one of the following :

    •   CG_GL_VERTEX

    •   CG_GL_GEOMETRY

    •   CG_GL_FRAGMENT

    •   CG_GL_TESSELLATION_CONTROL

    •   CG_GL_TESSELLATION_EVALUATION

RETURN VALUES
Returns a profile enumerant for the latest profile of the given class.

Returns CG_PROFILE_UNKNOWN if no appropriate profile is available or an error occurs.

DESCRIPTION
cgGLGetLatestProfile returns the best available profile of a given class. The OpenGL extensions are checked to determine the best profile which is supported by the current GPU, driver, and cgGL library combination.

profileClass may be one of the following enumerants :

•   CG_GL_VERTEX

    The latest available vertex profile will be returned.

•   CG_GL_GEOMETRY

    The latest available geometry profile will be returned.

•   CG_GL_FRAGMENT

    The latest available fragment profile will be returned.

•   CG_GL_TESSELLATION_CONTROL

    The latest available tessellation control profile will be returned.

•   CG_GL_TESSELLATION_EVALUATION

    The latest available tessellation evaluation profile will be returned.

cgGLGetLatestProfile can be used in conjuction with cgCreateProgram to ensure that more optimal profiles are used as they are made available, even though they might not have been available at compile time or with a different version of the runtime.

Starting in Cg 2.2, certain environment variables can override the value returned by cgGLGetLatestProfile:

If cgGLGetLatestProfile is called with profileClass being CG_GL_VERTEX and an environment variable named "CGGL_LATEST_VERTEX_PROFILE" is set in the application's environment to a string that cgGetProfile translates to a valid profile (meaning not "CG_PROFILE_UNKNOWN"), the CGprofile value returned by cgGetProfile is returned by cgGLGetLatestProfile.

If cgGLGetLatestProfile is called with profileClass being CG_GL_GEOMETRY and an environment variable named "CGGL_LATEST_GEOMETRY_PROFILE" is set in the application's environment to a string that cgGetProfile translates to a valid profile (meaning not "CG_PROFILE_UNKNOWN"), the CGprofile value returned by cgGetProfile is returned by cgGLGetLatestProfile.

If cgGLGetLatestProfile is called with profileClass being CG_GL_FRAGMENT and an environment variable named "CGGL_LATEST_FRAGMENT_PROFILE" is set in the application's environment to a string that cgGetProfile translates to a valid profile (meaning not "CG_PROFILE_UNKNOWN"), the CGprofile value returned by cgGetProfile is returned by cgGLGetLatestProfile.

If cgGLGetLatestProfile is called with profileClass being CG_GL_TESSELLATION_CONTROL and an environment variable named "CGGL_LATEST_TESSELLATION_CONTROL_PROFILE" is set in the application's environment to a string that cgGetProfile translates to a valid profile (meaning not "CG_PROFILE_UNKNOWN"), the CGprofile value returned by cgGetProfile is returned by cgGLGetLatestProfile.

If cgGLGetLatestProfile is called with profileClass being CG_GL_TESSELLATION_EVALUATION and an environment variable named "CGGL_LATEST_TESSELLATION_EVALUATION_PROFILE" is set in the application's environment to a string that cgGetProfile translates to a valid profile (meaning not "CG_PROFILE_UNKNOWN"), the CGprofile value returned by cgGetProfile is returned by cgGLGetLatestProfile.

EXAMPLES
  /* Output information about available profiles */
  printf("vertex profile:   %s\n",
         cgGetProfileString(cgGLGetLatestProfile(CG_GL_VERTEX)));
  printf("geometry profile: %s\n",
         cgGetProfileString(cgGLGetLatestProfile(CG_GL_GEOMETRY)));
  printf("fragment profile: %s\n",
         cgGetProfileString(cgGLGetLatestProfile(CG_GL_FRAGMENT)));
  printf("tessellation control profile: %s\n",
         cgGetProfileString(cgGLGetLatestProfile(CG_GL_TESSELLATION_CONTROL)));
  printf("tessellation evalutation profile: %s\n",
         cgGetProfileString(cgGLGetLatestProfile(CG_GL_TESSELLATION_EVALUATION)));

ERRORS
CG_INVALID_ENUMERANT_ERROR is generated if profileClass is not CG_GL_VERTEX, CG_GL_GEOMETRY, CG_GL_FRAGMENT, CG_GL_TESSELLATION_CONTROL, or CG_GL_TESSELLATION_EVALUATION.

HISTORY
cgGLGetLatestProfile was introduced in Cg 1.1.

CG_GL_GEOMETRY support was introduced in Cg 2.0.

CG_GL_TESSELLATION_CONTROL and CG_GL_TESSELLATION_EVALUATION support was introduced in Cg 3.0.

SEE ALSO
cgGLSetOptimalOptions, cgCreateProgram