Visualization LibraryA lightweight C++ OpenGL middleware for 2D/3D graphics |
[Home] [Tutorials] [All Classes] [Grouped Classes] |
Wraps the OpenGL function glLight(). More...
#include <Light.hpp>
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 |
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.
Definition at line 51 of file Light.hpp.
| 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.
| virtual const char* vl::Light::className | ( | ) | [inline, virtual] |
Returns the name of the class.
Reimplemented from vl::RenderState.
| 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] |
| void vl::Light::setDiffuse | ( | const fvec4 & | diffusecolor ) | [inline] |
| void vl::Light::setSpecular | ( | const fvec4 & | specularcolor ) | [inline] |
| void vl::Light::setPosition | ( | const fvec4 & | position ) | [inline] |
The position or direction of a 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.
| 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] |
| void vl::Light::setSpotExponent | ( | float | spotexponent ) | [inline] |
| void vl::Light::setSpotCutoff | ( | float | spotcutoff ) | [inline] |
| float vl::Light::spotCutoff | ( | ) | const [inline] |
| 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.
| 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.
| 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.
| 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] |
| 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.
fvec4 vl::Light::mAmbient [protected] |
fvec4 vl::Light::mDiffuse [protected] |
fvec4 vl::Light::mSpecular [protected] |
fvec4 vl::Light::mPosition [protected] |
fvec3 vl::Light::mSpotDirection [protected] |
float vl::Light::mSpotExponent [protected] |
float vl::Light::mSpotCutoff [protected] |
float vl::Light::mConstantAttenuation [protected] |
float vl::Light::mLinearAttenuation [protected] |
float vl::Light::mQuadraticAttenuation [protected] |
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().