为什么我的光照效果是这样的呀。
绘制函数如下:
void CScan3DDoc::Draw()
{
glPushMatrix();
glTranslatef(m_pView->light_position[0],m_pView->light_position[1],m_pView->light_position[2] );
glutSolidTeapot(5);
glutSolidTorus(10.0,15.0,50,50);
glutSolidTeapot(5);
glTranslatef(0.0,15.0,25.0);
glutSolidTeapot(8);
glutSolidSphere(20.0,50,50);
glPopMatrix();
glutSolidTeapot(30.0);
}
//---------光照---------------
void CScan3DView::glEnableLight()
{
/**/
GLfloat global_ambient[]={1.0f,1.0f,1.0f,1.0f};
GLfloat light0_position[]={0.0f,10.0f,-50.0f,1.0f};
GLfloat white_light[]={1.0,0.5,0.3,1.0};
GLfloat lmodel_ambient[]={0.1,0.1,0.1,1.0};
GLfloat spot_direction[]={0.0,0.0,50.0,1.0};
light_position[0]=light0_position[0];
light_position[1]=light0_position[1];
light_position[2]=light0_position[2];
glLightfv(GL_LIGHT0,GL_AMBIENT,global_ambient);
glLightfv(GL_LIGHT0,GL_DIFFUSE,white_light);
glLightfv(GL_LIGHT0,GL_SPECULAR,white_light);
glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,GL_FALSE);
glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER,GL_TRUE);
glLightModelfv(GL_LIGHT_MODEL_AMBIENT,lmodel_ambient);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glDepthFunc(GL_LESS);
glEnable(GL_DEPTH_TEST);
m_bLightEnabled=TRUE;
glSetMaterial();
}
//--------------------------------------
void CScan3DView::glSetMaterial()
{
GLfloat amb_[4], dif_[4], spe_[4], shin_;
GLfloat memi[4] = {0, 0, 0, 0};
amb_[0]=0.105882f, amb_[1]=0.058824f, amb_[2]=0.113725f, amb_[3]=1.0f;
dif_[0]=0.427451f, dif_[1]=0.470588f, dif_[2]=0.541176f, dif_[3]=1.0f;
spe_[0]=0.333333f, spe_[1]=0.333333f, spe_[2]=0.521569f, spe_[3]=1.0f;
shin_ =9.846150f;
glMaterialfv(GL_FRONT, GL_AMBIENT, amb_);
glMaterialfv(GL_FRONT, GL_DIFFUSE, dif_);
glMaterialfv(GL_FRONT, GL_SPECULAR, spe_);
glMaterialfv(GL_FRONT, GL_EMISSION, memi);
glMaterialf(GL_FRONT, GL_SHININESS, shin_);
}
同样的光照设置,同样的材质,在一个函数中绘制,为什么只有glutsolidTeapot,有光照效果呢?
有没有朋友遇到过同样的情况?实在是很郁闷,期待大家的解答,不胜感激!