1GLLIGHT(3G) OpenGL Manual GLLIGHT(3G)
2
3
4
6 glLight - set light source parameters
7
9 void glLightf(GLenum light, GLenum pname, GLfloat param);
10
11 void glLighti(GLenum light, GLenum pname, GLint param);
12
14 light
15 Specifies a light. The number of lights depends on the
16 implementation, but at least eight lights are supported. They are
17 identified by symbolic names of the form GL_LIGHTi, where i ranges
18 from 0 to the value of GL_MAX_LIGHTS - 1.
19
20 pname
21 Specifies a single-valued light source parameter for light.
22 GL_SPOT_EXPONENT, GL_SPOT_CUTOFF, GL_CONSTANT_ATTENUATION,
23 GL_LINEAR_ATTENUATION, and GL_QUADRATIC_ATTENUATION are accepted.
24
25 param
26 Specifies the value that parameter pname of light source light will
27 be set to.
28
30 void glLightfv(GLenum light, GLenum pname, const GLfloat * params);
31
32 void glLightiv(GLenum light, GLenum pname, const GLint * params);
33
35 light
36 Specifies a light. The number of lights depends on the
37 implementation, but at least eight lights are supported. They are
38 identified by symbolic names of the form GL_LIGHTi, where i ranges
39 from 0 to the value of GL_MAX_LIGHTS - 1.
40
41 pname
42 Specifies a light source parameter for light. GL_AMBIENT,
43 GL_DIFFUSE, GL_SPECULAR, GL_POSITION, GL_SPOT_CUTOFF,
44 GL_SPOT_DIRECTION, GL_SPOT_EXPONENT, GL_CONSTANT_ATTENUATION,
45 GL_LINEAR_ATTENUATION, and GL_QUADRATIC_ATTENUATION are accepted.
46
47 params
48 Specifies a pointer to the value or values that parameter pname of
49 light source light will be set to.
50
52 glLight sets the values of individual light source parameters. light
53 names the light and is a symbolic name of the form GL_LIGHTi, where i
54 ranges from 0 to the value of GL_MAX_LIGHTS - 1. pname specifies one
55 of ten light source parameters, again by symbolic name. params is
56 either a single value or a pointer to an array that contains the new
57 values.
58
59 To enable and disable lighting calculation, call glEnable() and
60 glDisable() with argument GL_LIGHTING. Lighting is initially disabled.
61 When it is enabled, light sources that are enabled contribute to the
62 lighting calculation. Light source i is enabled and disabled using
63 glEnable() and glDisable() with argument GL_LIGHTi.
64
65 The ten light parameters are as follows:
66
67 GL_AMBIENT
68 params contains four integer or floating-point values that specify
69 the ambient RGBA intensity of the light. Integer values are mapped
70 linearly such that the most positive representable value maps to
71 1.0, and the most negative representable value maps to -1.0.
72 Floating-point values are mapped directly. Neither integer nor
73 floating-point values are clamped. The initial ambient light
74 intensity is (0, 0, 0, 1).
75
76 GL_DIFFUSE
77 params contains four integer or floating-point values that specify
78 the diffuse RGBA intensity of the light. Integer values are mapped
79 linearly such that the most positive representable value maps to
80 1.0, and the most negative representable value maps to -1.0.
81 Floating-point values are mapped directly. Neither integer nor
82 floating-point values are clamped. The initial value for GL_LIGHT0
83 is (1, 1, 1, 1); for other lights, the initial value is (0, 0, 0,
84 1).
85
86 GL_SPECULAR
87 params contains four integer or floating-point values that specify
88 the specular RGBA intensity of the light. Integer values are mapped
89 linearly such that the most positive representable value maps to
90 1.0, and the most negative representable value maps to -1.0.
91 Floating-point values are mapped directly. Neither integer nor
92 floating-point values are clamped. The initial value for GL_LIGHT0
93 is (1, 1, 1, 1); for other lights, the initial value is (0, 0, 0,
94 1).
95
96 GL_POSITION
97 params contains four integer or floating-point values that specify
98 the position of the light in homogeneous object coordinates. Both
99 integer and floating-point values are mapped directly. Neither
100 integer nor floating-point values are clamped.
101
102 The position is transformed by the modelview matrix when glLight is
103 called (just as if it were a point), and it is stored in eye
104 coordinates. If the w component of the position is 0, the light is
105 treated as a directional source. Diffuse and specular lighting
106 calculations take the light's direction, but not its actual
107 position, into account, and attenuation is disabled. Otherwise,
108 diffuse and specular lighting calculations are based on the actual
109 location of the light in eye coordinates, and attenuation is
110 enabled. The initial position is (0, 0, 1, 0); thus, the initial
111 light source is directional, parallel to, and in the direction of
112 the - z axis.
113
114 GL_SPOT_DIRECTION
115 params contains three integer or floating-point values that specify
116 the direction of the light in homogeneous object coordinates. Both
117 integer and floating-point values are mapped directly. Neither
118 integer nor floating-point values are clamped.
119
120 The spot direction is transformed by the upper 3x3 of the modelview
121 matrix when glLight is called, and it is stored in eye coordinates.
122 It is significant only when GL_SPOT_CUTOFF is not 180, which it is
123 initially. The initial direction is 0 0 -1.
124
125 GL_SPOT_EXPONENT
126 params is a single integer or floating-point value that specifies
127 the intensity distribution of the light. Integer and floating-point
128 values are mapped directly. Only values in the range 0 128 are
129 accepted.
130
131 Effective light intensity is attenuated by the cosine of the angle
132 between the direction of the light and the direction from the light
133 to the vertex being lighted, raised to the power of the spot
134 exponent. Thus, higher spot exponents result in a more focused
135 light source, regardless of the spot cutoff angle (see
136 GL_SPOT_CUTOFF, next paragraph). The initial spot exponent is 0,
137 resulting in uniform light distribution.
138
139 GL_SPOT_CUTOFF
140 params is a single integer or floating-point value that specifies
141 the maximum spread angle of a light source. Integer and
142 floating-point values are mapped directly. Only values in the range
143 0 90 and the special value 180 are accepted. If the angle between
144 the direction of the light and the direction from the light to the
145 vertex being lighted is greater than the spot cutoff angle, the
146 light is completely masked. Otherwise, its intensity is controlled
147 by the spot exponent and the attenuation factors. The initial spot
148 cutoff is 180, resulting in uniform light distribution.
149
150 GL_CONSTANT_ATTENUATION
151
152 GL_LINEAR_ATTENUATION
153
154 GL_QUADRATIC_ATTENUATION
155 params is a single integer or floating-point value that specifies
156 one of the three light attenuation factors. Integer and
157 floating-point values are mapped directly. Only nonnegative values
158 are accepted. If the light is positional, rather than directional,
159 its intensity is attenuated by the reciprocal of the sum of the
160 constant factor, the linear factor times the distance between the
161 light and the vertex being lighted, and the quadratic factor times
162 the square of the same distance. The initial attenuation factors
163 are (1, 0, 0), resulting in no attenuation.
164
166 It is always the case that GL_LIGHTi = GL_LIGHT0 + i.
167
169 GL_INVALID_ENUM is generated if either light or pname is not an
170 accepted value.
171
172 GL_INVALID_VALUE is generated if a spot exponent value is specified
173 outside the range 0 128, or if spot cutoff is specified outside the
174 range 0 90 (except for the special value 180), or if a negative
175 attenuation factor is specified.
176
177 GL_INVALID_OPERATION is generated if glLight is executed between the
178 execution of glBegin() and the corresponding execution of glEnd().
179
181 glGetLight()
182
183 glIsEnabled() with argument GL_LIGHTING
184
186 glColorMaterial(), glLightModel(), glMaterial()
187
189 Copyright © 1991-2006 Silicon Graphics, Inc. This document is licensed
190 under the SGI Free Software B License. For details, see
191 http://oss.sgi.com/projects/FreeB/.
192
194 opengl.org
195
196
197
198opengl.org 06/10/2014 GLLIGHT(3G)