glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);/
GLfloat _ambient[]={1,1,1,0};//环境光
GLfloat _diffuse[]={1,1,1,0};//漫反射光
GLfloat _specular[]={0,0,0,0};//镜面光
GLfloat _position[]={0,0,1000,0}; //光源位置坐标
GLfloat mat_ambient[]={1,0,0,0};
GLfloat mat_diffuse[]={1,0,0,0};
GLfloat mat_specular[] = {0,0,0,1};
GLfloat mat_shininess[]={100};GLfloat ambientLight[]={0.2,0.2,0.2,1};glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT, mat_ambient);
glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE, mat_diffuse);
glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR, mat_specular);
glMaterialfv(GL_FRONT_AND_BACK,GL_SHININESS, mat_shininess); glLightModelfv(GL_LIGHT_MODEL_AMBIENT,ambientLight); glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SEPARATE_SPECULAR_CONTROL);glLightfv(GL_LIGHT0,GL_AMBIENT,_ambient);//环境光
glLightfv(GL_LIGHT0,GL_DIFFUSE,_diffuse);//漫反射光
glLightfv(GL_LIGHT0,GL_SPECULAR,_specular);//镜面光
glLightfv(GL_LIGHT0,GL_POSITION,_position);//光源位置坐标
环境/漫反 镜面 和 材质的 环境光 漫反 镜面 
混乱了不知道怎么下手总是 一片 红 要么一片绿 或者旋转时 一会儿一片红 一会儿一片绿如果要是 设置 一个 绿色的球  白色光照到上面 有立体感   该怎么设置  光照的 环境/漫反 镜面 和 材质的 环境漫反 镜面 ?

解决方案 »

  1.   

    另外我下了个glext.h放到 includes里 怎么还是出现  “GL_SEPARATE_SPECULAR_CONTROL”: 未声明的标识符  。?
      

  2.   

    GLfloat mat_ambient[]={1,0,0,0};
    GLfloat mat_diffuse[]={1,0,0,0};
    GLfloat mat_specular[] = {0,0,0,1};
    GLfloat mat_shininess[]={100};
    你设置的材质是红色和黑色,可以都设置成0,1,0,镜面材质也设置成0,1,0
    朝向光源的会绿色更多一点
    GL_LIGHT_MODEL_COLOR_CONTROL是和纹理有关的光照计算,好像1.2以上才支持,而且和显卡有关