PDA

View Full Version : Settiing more than 1 Light Source Problem

moxx
01-13-2002, 01:53 PM
I want to set 3 Light Sources. I define Array of 3 GLfloat - Position of each Source, and write simple "for" loop inside glBegin and glEnd, where I set Light Properties and write glEnable(LIGHT0 + i) for each source. BU-U-UT, It draws only the first source. Any propositions for rookie? Thnx.
Best Regards from Kyyv.

mikael_aronsson
01-13-2002, 02:36 PM
Hi !

Have a peek at the docs, you can only use glVertex..., glColor... and a few other functions between glBegin and glEnd.

Mikael

chowe6685
01-13-2002, 04:22 PM
I may be completely misunderstanding you but if your code is

for(int i=0; i<BLAH; i++)
{
//do stuff
glEnable(GL_LIGHT0 + i)
//do more
}
it won't work
GL_LIGHT0, GL_LIGHT1 etc are all predefined constants and you cannot get from one to the other just by adding, try using a case statement
ie
switch(i)
{
case 0:
glenable(GL_LIGHT0);
break;
etc...
}

moxx
01-13-2002, 04:34 PM
Excuse me:
(from gl.h)
#define GL_LIGHT0 0x4000
#define GL_LIGHT1 0x4001
#define GL_LIGHT2 0x4002
#define GL_LIGHT3 0x4003
#define GL_LIGHT4 0x4004
#define GL_LIGHT5 0x4005
#define GL_LIGHT6 0x4006
#define GL_LIGHT7 0x4007

So, if I add 1 to GL_LIGHT0 I will get GL_LIGHT1
0x4000 + 1 = 0x4001 (GL_LIGHT1)

or there is a difference between:
- 0x4000 + 1 = 0x4001 (GL_LIGHT1)
and
- 0x4000 + 0x1 = 0x4001 (GL_LIGHT1)

sorry then....

[This message has been edited by moxx (edited 01-13-2002).]

Robin Forster
01-13-2002, 05:13 PM
Do it outside your glBegin and glEnd.

dorbie
01-14-2002, 12:31 AM
mox, your approach of incrementing the constant is correct. Robin Forster has your solution.

moxx
01-15-2002, 09:51 AM
Actually, I Use glEnable(GL_LIGHT[i]) only inside "for", And I initialize All Light Attributes there (in the "for" loop), but it's enables only the first Souce (GL_LIGHT0)

01-15-2002, 01:00 PM
Are you setting the light properties properly? (Ex: GL_DIFFUSE, GL_AMBIENT) Because the default light for light0 is {1, 1, 1, 1} (RGBA) i.e white light and for all other light sources it is {0,0,0,1} i.e black. So even if you enable them there will be no difference.

Hope this helps.

moxx
01-16-2002, 03:05 AM
... finally it works...
thanx
I only had to set diffuse, ambient and specular colors separetely.

My teacher always told me: "max, you should think first then do something and ask somebody"

thnx