well i have to draw several objects and what i get is olny the one… alla the others appear black…
any idea??
the first objects is a textured image and the others are models i have loaded…
here is parts of my code…
my display:
if (x[i][j]=='*') {
glColor3f(1.0,1.0,1.0);
drawcube_wall(cnt1,cnt2,temp1,temp2);
}
else if (x[i][j]=='2'){
glColor3f(0,1,0);
drawfood(cnt1,cnt2,temp1,temp2);
fruits=fruits+1;
}
my drawnig functions…
the first one that works:
glPushMatrix();
glEnable(GL_TEXTURE_2D);
glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_REPLACE);
glBindTexture(GL_TEXTURE_2D,textureID[0]);
//drawing//
glDisable(GL_TEXTURE_2D);
glPopMatrix();
}
and after that the problematic one:
GLfloat ambientcoefficients[]={0.0,0.0,0.0};
glPushMatrix();
glEnable(GL_TEXTURE_2D);
glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,ambientcoefficients);
glTranslatef( (GLfloat) b1+a1/2, (GLfloat) b2+a2/2, 0);
glRotatef(45,1,0,0);
if (a1<a2) glScalef(1.0,GLfloat (a2/a1),1.0);
else glScalef(1.0,GLfloat (a1/a2),1.0);
glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_REPLACE);
glBindTexture(GL_TEXTURE_2D, g_models[0].tex);
glCallList(g_models[0].dlist);
glDisable(GL_TEXTURE_2D);
glPopMatrix();
}
i dont know what i am doing wrong… what i want for the second item is to be drawn with the colour of the object… the object is loaded correctly (its texture with its colour)
if its necessary this is my lighting function:
GLfloat light_specular[] = {1.0,1.0,1.0,1.0};
GLfloat light_diffuse[] = {1.0,1.0,1.0,1.0};
GLfloat light_ambient[] = {0.0,0.0,0.0,1.0};
GLfloat light_position[] = { -2.0, 2.0, 2.0, 1.0 };
GLfloat light_model[] = { 0.7, 0.7, 0.7, 1.0 };
glLightfv(GL_LIGHT0,GL_SPECULAR,light_specular);
glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse);
glLightfv(GL_LIGHT0,GL_AMBIENT,light_ambient);
glLightfv(GL_LIGHT0, GL_POSITION,light_position);
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, light_model);
glClearColor (0.1, 0.1, 0.1, 1.0);
glShadeModel (GL_SMOOTH);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_DEPTH_TEST);
//blending - antialiasing
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_LINE_SMOOTH);
glEnable(GL_POLYGON_SMOOTH);
glEnable(GL_POINT_SMOOTH);
//glEnable(GL_BLEND);
glHint(GL_LINE_SMOOTH_HINT,GL_NICEST);
glHint(GL_POINT_SMOOTH_HINT,GL_NICEST);
glHint(GL_POLYGON_SMOOTH_HINT,GL_NICEST);
glLineWidth(2.0);
//fog
glEnable(GL_FOG);
GLfloat fogColor[4] = {0.0,0.0,0.0,1.0};
GLint fogMode = GL_LINEAR;
glFogi(GL_FOG_MODE,fogMode);
glFogfv(GL_FOG_COLOR,fogColor);
glFogf(GL_FOG_DENSITY,0.50);
glHint(GL_FOG_HINT,GL_NICEST);
glFogf(GL_FOG_START,50.0);
glFogf(GL_FOG_END,100.0);