GLfloat light_specular[]={1.0, 1.0, 1.0, 1.0};
GLfloat light_shininess={50.0};
GLfloat light_position[] = {0.0, 0.0,1.0,1.0};//无穷远光源
//GL_AMBIENT ,GL_DIFFUSE , GL_SPECULAR 
glLightfv (GL_LIGHT0,GL_SPECULAR, light_specular);
glLightf(GL_LIGHT0,GL_SHININESS, light_shininess);
glLightfv(GL_LIGHT0,GL_POSITION,light_position); glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
这样添加了光源之后,我绘制的图形(正方体,茶壶)原来的颜色都没了,都变成黑色和灰色了,能看出来光源效果,但是就是没有颜色...

解决方案 »

  1.   

    先开启光照,再设置光照吧。你的顺序可能有问题OPENGL是状态机。
      

  2.   


    glEnable(GL_LIGHTING);
    GLfloat light_specular[]={1.0, 1.0, 1.0, 1.0};
    GLfloat light_shininess={50.0};
    GLfloat light_position[] = {0.0, 0.0,1.0,1.0};//无穷远光源
    //GL_AMBIENT ,GL_DIFFUSE , GL_SPECULAR 
    glLightfv (GL_LIGHT0,GL_SPECULAR, light_specular);
    glLightf(GL_LIGHT0,GL_SHININESS, light_shininess);
    glLightfv(GL_LIGHT0,GL_POSITION,light_position); glEnable(GL_LIGHT0);还是一样效果.光照效果有的,只是不能显示绘制的图形的颜色.
      

  3.   

    GLfloat light_position[] = {0.0, 0.0,-1.0,1.0};
      

  4.   

    漫反应没有设置,GL_SHININESS是材质参数,你还需要设置物体的材质。
      

  5.   

    漫反射颜色没有设置,物体的材质也需要设置,另外GL_SHININESS是材质参数,用glMaterialf设置的。
    打了灯光,就不需要物体的颜色信息了。
      

  6.   

    使用以下函数将物体颜色转成默认材质:
    glEnable(GL_COLOR_MATERIAL);