# Visualization Library

A lightweight C++ OpenGL middleware for 2D/3D graphics

[Home] [Tutorials] [All Classes] [Grouped Classes]

Public Member Functions | Protected Attributes

# vl::Light Class Reference

Wraps the OpenGL function glLight(). More...

`#include <Light.hpp>`

Inheritance diagram for vl::Light:

List of all members.

## Public Member Functions

| Light (int light_index)
virtual const char * | className ()
| Returns the name of the class.
virtual ERenderState | type () const
virtual void | apply (const Camera *, OpenGLContext *ctx) const
| The parameter cameara is NULL if we are disabling the state, non-NULL if we are enabling it.
void | setAmbient (const fvec4 &ambientcolor)
const fvec4 & | ambient () const
void | setDiffuse (const fvec4 &diffusecolor)
const fvec4 & | diffuse () const
void | setSpecular (const fvec4 &specularcolor)
const fvec4 & | specular () const
void | setPosition (const fvec4 &position)
| The position or direction of a light.
const fvec4 & | position () const
| The position or direction of a light.
void | setSpotDirection (const fvec3 &spotdirection)
const fvec3 & | spotDirection () const
void | setSpotExponent (float spotexponent)
float | spotExponent () const
void | setSpotCutoff (float spotcutoff)
| Valid values are from 0.0f to 90.0f plus the special value 180.0f (default) which disables the spot lighting.
float | spotCutoff () const
| Valid values are from 0.0f to 90.0f plus the special value 180.0f (default) which disables the spot lighting.
void | setLinearAttenuation (float linearattenuation)
| If the light is positional, rather than directional, its intensity is attenuated by the reciprocal of the sum of the constant attenuation, the linear attenuation times the distance between the light and the vertex being lighted, and the quadratic attenuation times the square of the same distance.
float | linearAttenuation () const
void | setQuadraticAttenuation (float quadraticattenuation)
| If the light is positional, rather than directional, its intensity is attenuated by the reciprocal of the sum of the constant attenuation, the linear attenuation times the distance between the light and the vertex being lighted, and the quadratic attenuation times the square of the same distance.
float | quadraticAttenuation () const
void | setConstantAttenuation (float constantattenuation)
| If the light is positional, rather than directional, its intensity is attenuated by the reciprocal of the sum of the constant attenuation, the linear attenuation times the distance between the light and the vertex being lighted, and the quadratic attenuation times the square of the same distance.
float | constantAttenuation () const
void | setLightIndex (int light_index)
int | lightIndex () const
void | followTransform (Transform *transform)
| If NULL follows the camera otherwise the given transformation node.
Transform * | followedTransform ()
const Transform * | followedTransform () const

## Protected Attributes

fvec4 | mAmbient
fvec4 | mDiffuse
fvec4 | mSpecular
fvec4 | mPosition
fvec3 | mSpotDirection
float | mSpotExponent
float | mSpotCutoff
float | mConstantAttenuation
float | mLinearAttenuation
float | mQuadraticAttenuation
ref< Transform > | mFollowedTransform
int | mLightIndex

## Detailed Description

Wraps the OpenGL function glLight().

See also http://www.opengl.org/sdk/docs/man/xhtml/glLight.xml for more information.

See also the Lights Tutorial for a practical example of how to use OpenGL lights.

See also:
  Shader, Effect, Actor, vl::EN_LIGHTING

Definition at line 51 of file Light.hpp.

## Constructor & Destructor Documentation

Light::Light | ( | int | light_index ) |

Definition at line 43 of file Light.cpp.

References vl::Log::error(), mAmbient, mConstantAttenuation, mDiffuse, mFollowedTransform, mLightIndex, mLinearAttenuation, mPosition, mQuadraticAttenuation, mSpecular, mSpotCutoff, mSpotDirection, mSpotExponent, VL_CHECK, and VL_DEBUG_SET_OBJECT_NAME.

## Member Function Documentation

virtual const char* vl::Light::className | ( | ) | `[inline, virtual]`

Returns the name of the class.

Reimplemented from vl::RenderState.

Definition at line 56 of file Light.hpp.

virtual ERenderState vl::Light::type | ( | ) | const`[inline, virtual]`

Reimplemented from vl::RenderState.

Definition at line 58 of file Light.hpp.

References vl::RS_Light0.

void Light::apply | ( | const Camera * | camera,
|  | OpenGLContext * | ctx
| ) |  | const`[virtual]`

The parameter cameara is NULL if we are disabling the state, non-NULL if we are enabling it.

Implements vl::RenderState.

Definition at line 71 of file Light.cpp.

References vl::Camera::applyModelViewMatrix(), followedTransform(), lightIndex(), mAmbient, mConstantAttenuation, mDiffuse, mLinearAttenuation, mPosition, mQuadraticAttenuation, mSpecular, mSpotCutoff, mSpotDirection, mSpotExponent, vl::Vector3< T_Scalar >::ptr(), vl::Vector4< T_Scalar >::ptr(), VL_CHECK, and vl::Vector4< T_Scalar >::w().

void vl::Light::setAmbient | ( | const fvec4 & | ambientcolor ) | `[inline]`

Definition at line 62 of file Light.hpp.

const fvec4& vl::Light::ambient | ( | ) | const`[inline]`

Definition at line 63 of file Light.hpp.

void vl::Light::setDiffuse | ( | const fvec4 & | diffusecolor ) | `[inline]`

Definition at line 65 of file Light.hpp.

const fvec4& vl::Light::diffuse | ( | ) | const`[inline]`

Definition at line 66 of file Light.hpp.

void vl::Light::setSpecular | ( | const fvec4 & | specularcolor ) | `[inline]`

Definition at line 68 of file Light.hpp.

const fvec4& vl::Light::specular | ( | ) | const`[inline]`

Definition at line 69 of file Light.hpp.

void vl::Light::setPosition | ( | const fvec4 & | position ) | `[inline]`

The position or direction of a light.

- If the fourth component of position equals 0.0f then the light is considered a directional light and position points in the direction of the light.
- If the fourth component of position equals 1.0f then the light is considered a positional light and position contains the position of the light.

Note. The position or direction of a light is relative to the followed Transform or to the camera if the light does not follow any transform.

Definition at line 77 of file Light.hpp.

const fvec4& vl::Light::position | ( | ) | const`[inline]`

The position or direction of a light.

Definition at line 79 of file Light.hpp.

Referenced by vl::SlicedVolume::updateUniforms(), and vl::RaycastVolume::updateUniforms().

void vl::Light::setSpotDirection | ( | const fvec3 & | spotdirection ) | `[inline]`

Definition at line 81 of file Light.hpp.

const fvec3& vl::Light::spotDirection | ( | ) | const`[inline]`

Definition at line 82 of file Light.hpp.

void vl::Light::setSpotExponent | ( | float | spotexponent ) | `[inline]`

Definition at line 84 of file Light.hpp.

float vl::Light::spotExponent | ( | ) | const`[inline]`

Definition at line 85 of file Light.hpp.

void vl::Light::setSpotCutoff | ( | float | spotcutoff ) | `[inline]`

Valid values are from 0.0f to 90.0f plus the special value 180.0f (default) which disables the spot lighting.

Definition at line 88 of file Light.hpp.

float vl::Light::spotCutoff | ( | ) | const`[inline]`

Valid values are from 0.0f to 90.0f plus the special value 180.0f (default) which disables the spot lighting.

Definition at line 90 of file Light.hpp.

void vl::Light::setLinearAttenuation | ( | float | linearattenuation ) | `[inline]`

If the light is positional, rather than directional, its intensity is attenuated by the reciprocal of the sum of the constant attenuation, the linear attenuation times the distance between the light and the vertex being lighted, and the quadratic attenuation times the square of the same distance.

Definition at line 95 of file Light.hpp.

float vl::Light::linearAttenuation | ( | ) | const`[inline]`

Definition at line 96 of file Light.hpp.

void vl::Light::setQuadraticAttenuation | ( | float | quadraticattenuation ) | `[inline]`

If the light is positional, rather than directional, its intensity is attenuated by the reciprocal of the sum of the constant attenuation, the linear attenuation times the distance between the light and the vertex being lighted, and the quadratic attenuation times the square of the same distance.

Definition at line 101 of file Light.hpp.

float vl::Light::quadraticAttenuation | ( | ) | const`[inline]`

Definition at line 102 of file Light.hpp.

void vl::Light::setConstantAttenuation | ( | float | constantattenuation ) | `[inline]`

If the light is positional, rather than directional, its intensity is attenuated by the reciprocal of the sum of the constant attenuation, the linear attenuation times the distance between the light and the vertex being lighted, and the quadratic attenuation times the square of the same distance.

Definition at line 107 of file Light.hpp.

float vl::Light::constantAttenuation | ( | ) | const`[inline]`

Definition at line 108 of file Light.hpp.

void Light::setLightIndex | ( | int | light_index ) |

Definition at line 63 of file Light.cpp.

References vl::Log::error(), mLightIndex, and VL_CHECK.

int vl::Light::lightIndex | ( | ) | const`[inline]`

Definition at line 111 of file Light.hpp.

Referenced by apply().

void Light::followTransform | ( | Transform * | transform ) |

If NULL follows the camera otherwise the given transformation node.

Definition at line 123 of file Light.cpp.

References mFollowedTransform.

Transform * Light::followedTransform | ( | ) |

Definition at line 128 of file Light.cpp.

References vl::ref< T >::get(), and mFollowedTransform.

Referenced by apply(), vl::SlicedVolume::updateUniforms(), and vl::RaycastVolume::updateUniforms().

const Transform * Light::followedTransform | ( | ) | const

Definition at line 133 of file Light.cpp.

References vl::ref< T >::get(), and mFollowedTransform.

## Member Data Documentation

fvec4 vl::Light::mAmbient`[protected]`

Definition at line 119 of file Light.hpp.

Referenced by apply(), and Light().

fvec4 vl::Light::mDiffuse`[protected]`

Definition at line 120 of file Light.hpp.

Referenced by apply(), and Light().

fvec4 vl::Light::mSpecular`[protected]`

Definition at line 121 of file Light.hpp.

Referenced by apply(), and Light().

fvec4 vl::Light::mPosition`[protected]`

Definition at line 122 of file Light.hpp.

Referenced by apply(), and Light().

fvec3 vl::Light::mSpotDirection`[protected]`

Definition at line 123 of file Light.hpp.

Referenced by apply(), and Light().

float vl::Light::mSpotExponent`[protected]`

Definition at line 124 of file Light.hpp.

Referenced by apply(), and Light().

float vl::Light::mSpotCutoff`[protected]`

Definition at line 125 of file Light.hpp.

Referenced by apply(), and Light().

float vl::Light::mConstantAttenuation`[protected]`

Definition at line 126 of file Light.hpp.

Referenced by apply(), and Light().

float vl::Light::mLinearAttenuation`[protected]`

Definition at line 127 of file Light.hpp.

Referenced by apply(), and Light().

float vl::Light::mQuadraticAttenuation`[protected]`

Definition at line 128 of file Light.hpp.

Referenced by apply(), and Light().

ref<Transform> vl::Light::mFollowedTransform`[protected]`

Definition at line 129 of file Light.hpp.

Referenced by followedTransform(), followTransform(), and Light().

int vl::Light::mLightIndex`[protected]`

Definition at line 130 of file Light.hpp.

Referenced by Light(), and setLightIndex().

The documentation for this class was generated from the following files:

- D:/VL/BuildSystem/VL_DISTRO/Visualization_Library_SDK/src/vlGraphics/Light.hpp
- D:/VL/BuildSystem/VL_DISTRO/Visualization_Library_SDK/src/vlGraphics/Light.cpp

Visualization Library v2011.05.1142 Reference Documentation
Copyright 2005-2011 Michele Bosi. All rights reserved.
Updated on Thu May 26 2011 22:51:42.
Permission is granted to use this page to write and publish articles regarding Visualization Library.