Public Group

Archived

This topic is now archived and is closed to further replies.

this whole google shit and openGL lighting

This topic is 5577 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

Recommended Posts

i started this google-shit to send up those who keep this formus full with questions like "what means & in C" or "how can i write 3d games in html". i thought it would be funny to see what will be written into something really lame. but i think now it's all getting out of control. ... AND WHO IS "dobeneck" ? now to the question... i wrote a terrain engine that supports lots of nice thingies, so i don't want to rewrite it. i use vertex-, normal-, and tex-coords arrays. all normals are set well, and if i make the lighing calculations with the fpu (yes, i extended my algoritm), anything works fine. but if i use the openGL functions to calculate lighting, only those vertices are lit, that have a z-Coordinate greater or equal to the light source (in the modelview matrix). i have no idea what i'm doing wrong. (is there any way to upload a picture here)??? if i let the light source be a spotlight, that rotates over time, i see those vertices with greater z-coord beeing lit with the usual nasty spotlight (no per pixel lighting) effects to the vertices beeing lit normaly. at those verices that lie on the line (z = lightpos -> z) there are really good looking shades. i use linux 2.4.20, a nVidia geforce 4 ti 4200 and the newest detonator (the older one's show the same thing). somebody has had the same problems before? or knows the errors?

/*intialization*/
float l[4] = {0.0f, 35.0f, 0.0f, 1.0f};
glLightfv(GL_LIGHT0, GL_POSITION, l);

/*the drawing function*/
float spot_dir[3] = {sin(rotation_light0), -1.0f, cos(rotation_light0)};
glLightf (GL_LIGHT0, GL_SPOT_CUTOFF, 45.0f);
glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, spot_dir);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);

/*i think this isn't important here*/
glClientActiveTextureARB(GL_TEXTURE0_ARB);
glActiveTextureARB(GL_TEXTURE0_ARB);
glBindTexture(GL_TEXTURE_2D, texmgr -> terrain_texture);
glEnable(GL_TEXTURE_2D);

glClientActiveTextureARB(GL_TEXTURE1_ARB);
glActiveTextureARB(GL_TEXTURE1_ARB);
glBindTexture(GL_TEXTURE_2D, texmgr -> detail_texture);
glEnable(GL_TEXTURE_2D);

for(int i = 0; i < TERRAIN_GRID_WIDTH * TERRAIN_GRID_HEIGHT / 64; i++)
{
if(vf -> sphereIsInside(point3f(occ_nodes[i].xPos, occ_nodes[i].yPos, occ_nodes[i].zPos), occ_nodes[i].radius))
glCallList(occ_nodes[i].displayListsID);
}

glDisable(GL_TEXTURE_2D);
glClientActiveTextureARB(GL_TEXTURE0_ARB);
glActiveTextureARB(GL_TEXTURE0_ARB);
glDisable(GL_TEXTURE_2D);
glDisable(GL_LIGHTING);


[edited by - 666_1337 on March 17, 2003 1:45:07 PM]

1. 1
2. 2
3. 3
4. 4
5. 5
Rutin
18

• 12
• 12
• 9
• 12
• 37
• Forum Statistics

• Total Topics
631421
• Total Posts
2999994
×