Thanks for the reply,
Now I have set the normals to the surface using glNormalf();
and i have set lighting position to {0,0,1,1)
But still the object doesn’t look 3D
What could be the problem
Any susggestions
Attaching part of my code…
void
reshape(int width, int height)
{
GLfloat light_pos[] = { 0, 0, 1, 1 };
glViewport(-300, -300, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-2,2,-5,5,-2,2);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
GLfloat light_ambient[] = {0.0, 0.0, 0.0, 1.0};
GLfloat light_diffuse[] = {0.7, 0.7, 0.7, 1.0};
GLfloat light_specular[] = {1.0, 1.0, 1.0, 1.0};
glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);
glLightfv(GL_LIGHT0, GL_POSITION, light_pos);
glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 1.0);
glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.0);
glLightf(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, 0.0);
glEnable(GL_LIGHT0);
glLoadIdentity();
glShadeModel(GL_SMOOTH);
gluPerspective(30,(GLfloat)width/height,150,250);
gluLookAt(30,-30,250,21,-50,21,0,1,0);
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0f,0.0f,1.0f);
glBegin (GL_QUADS);
glVertex3f(0,100,0);
glVertex3f(100,100,0);
glVertex3f(100,200,0);
glVertex3f(0,200,0);
glBegin (GL_TRIANGLES);
for(int si=1;si<=41;si++)
{
for(int sj=1;sj<=41;sj++)
{
glColor3f (0.0f, 1.0f, 1.0f);
glNormal3f(0,0,1);
glVertex3f(xw[si],0,- yw[sj]);
glVertex3f(xw[si+1],0, -yw[sj]);
glVertex3f(xw[si+1],zw[si+1][sj],- yw[sj]);
glNormal3f(0,0,1);
glVertex3f(xw[si+1],zw[si+1][sj], -yw[sj]);
glVertex3f(xw[si],zw[si][sj], -yw[sj]);
glVertex3f(xw[si],0, -yw[sj]);
glColor3f (0.0f, 1.0f, 1.0f);
glNormal3f(-1,0,0);
glVertex3f(xw[si],0, -yw[sj]);
glVertex3f(xw[si],zw[si][sj], -yw[sj]);
glVertex3f(xw[si],zw[si][sj+1], -yw[sj+1]);
glNormal3f(-1,0,0);
glVertex3f(xw[si],0, -yw[sj]);
glVertex3f(xw[si],zw[si][sj+1], -yw[sj+1]);
glVertex3f(xw[si],0, -yw[sj+1]);
/calnormal(xw[si+1],zw[si+1][sj],yw[sj],xw[si],zw[si][sj],yw[sj],xw[si+1],zw[si+1][sj+1],yw[sj+1]);/
glColor3f (0.0f, 1.0f, 0.0f);
glNormal3f(0,1,0);
glVertex3f(xw[si+1],zw[si+1][sj], -yw[sj]);
glVertex3f(xw[si],zw[si][sj], -yw[sj]);
glVertex3f(xw[si+1],zw[si+1][sj+1], -yw[sj+1]);
glNormal3f(0,1,0);
/calnormal(xw[si+1],zw[si+1][sj+1], yw[sj+1],xw[si],zw[si][sj+1], yw[sj+1],xw[si],zw[si][sj], yw[sj]);/
glVertex3f(xw[si+1],zw[si+1][sj+1],- yw[sj+1]);
glVertex3f(xw[si],zw[si][sj+1], -yw[sj+1]);
glVertex3f(xw[si],zw[si][sj], -yw[sj]);
glColor3f (0.0f, 1.0f, 1.0f);
glNormal3f(-1,0,0);
glVertex3f(xw[si+1],0, -yw[sj]);
glVertex3f(xw[si+1],zw[si+1][sj], -yw[sj]);
glVertex3f(xw[si+1],zw[si+1][sj+1], -yw[sj+1]);
glNormal3f(-1,0,0);
glVertex3f(xw[si+1],zw[si+1][sj+1], -yw[sj+1]);
glVertex3f(xw[si+1],0, -yw[sj+1]);
glVertex3f(xw[si+1],0, -yw[sj]);
glColor3f (0.0f, 1.0f, 1.0f);
glNormal3f(0,0,1);
glVertex3f(xw[si+1],zw[si+1][sj+1], -yw[sj+1]);
glVertex3f(xw[si+1],0,- yw[sj+1]);
glVertex3f(xw[si],zw[si][sj+1], -yw[sj+1]);
glNormal3f(0,0,1);
glVertex3f(xw[si],zw[si][sj+1], -yw[sj+1]);
glVertex3f(xw[si+1],0, -yw[sj+1]);
glVertex3f(xw[si],0, -yw[sj+1]);
glColor3f (0.0f, 1.0f, 1.0f);
glNormal3f(0,0,1);
glVertex3f(xw[si],0, -yw[sj+1]);
glVertex3f(xw[si+1],0,- yw[sj+1]);
glVertex3f(xw[si],0, -yw[sj]);
glNormal3f(0,0,1);
glVertex3f(xw[si],0, -yw[sj]);
glVertex3f(xw[si+1],0, -yw[sj+1]);
glVertex3f(xw[si+1],0, -yw[sj]);
}
}
glEnd();
glFlush();
}
Thanks
aus