Sign in to follow this  

Spotlight doesn't light up my scene

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

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hello everyone!

I'm having some trouble with getting a spotlight to correctly light up my scene.

The center of my scene is at 0, 0, 0.

I translate and rotate my scene so that it seems like a player has moved,
I then reposition the light at 0, 0, 0 and draw the world around 0, 0, 0 as center point.

I am not seeing my spotlight however... Who knows what might be wrong?
[code]// INIT:

glShadeModel(GL_SMOOTH); // Enable smooth shading
qglClearColor(Qt::black); // Set the clear color to a black background
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Really nice perspective calculations

// Set up lighting
glEnable(GL_LIGHTING);
GLfloat fv[] = {1.0f, 1.0f, 1.0f, 1.0f};
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, fv);
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, fv);

// Spot in center of room shining down
GLfloat ambient = {0.5f, 0.2f, 0.2f, 1.0f};
glLightfv(GL_LIGHT1, GL_AMBIENT, ambient);
GLfloat diffuse = {0.5f, 0.2f, 0.2f, 1.0f};
glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse);
GLfloat specular = {0.5f, 0.2f, 0.2f, 1.0f};
glLightfv(GL_LIGHT1, GL_SPECULAR, specular);
glLightf(GL_LIGHT1, GL_SPOT_CUTOFF, 90.0f);
GLfloat direction = {0.0f, 0.0f, -1.0f};
glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, direction);
glEnable(GL_LIGHT1);

// Set up textures
glEnable(GL_TEXTURE_2D);

// Set up blending
glBlendFunc(GL_SRC_ALPHA, GL_ONE);

// Set up depth testing
glClearDepth(1.0f);
glDepthFunc(GL_LESS);
glEnable(GL_DEPTH_TEST);

// RESIZE:

// Prevent divide by zero (in the gluPerspective call)
if (height == 0)
height = 1;

glViewport(0, 0, width, height); // Reset current viewport

glMatrixMode(GL_PROJECTION); // Select projection matrix
glLoadIdentity(); // Reset projection matrix

gluPerspective(45.0f, static_cast<GLfloat>(width)/height, 0.1f, 100.0f); // Calculate aspect ratio

glMatrixMode(GL_MODELVIEW); // Select modelview matrix
glLoadIdentity(); // Reset modelview matrix

// PAINT:

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear screen and depth buffer

glMatrixMode(GL_MODELVIEW); // Select modelview matrix
glLoadIdentity(); // Reset modelview matrix

// Move scene to make it seem like player moves around
glRotatef(lookupdown, 1.0f, 0.0f, 0.0f);
glRotatef(sceneroty, 0.0f, 1.0f, 0.0f); // Rotate to direction player is watching
glTranslatef(xtrans, ytrans, ztrans); // Translate scene based on player position

// The center of the world is at (0.0f, 0.0f, 0.0f)

// Reset light position
GLfloat fv[] = {0.0f, 0.0f, 0.0f, 1.0f};
glLightfv(GL_LIGHT1, GL_POSITION, fv);

// Draw the world
for (int i = 0; i < displayLists.size(); ++i) {
glCallList(displayLists.at(i)); }[/code]

Share this post


Link to post
Share on other sites

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

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this