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