opengl消隐与光照

本文介绍了在OpenGL中设置材料颜色、光源位置和颜色,以及如何创建聚光灯效果。通过glMaterial*()函数调整物体的环境、散射和镜面反射属性,设定光源位置以影响光照效果,并通过GL_SPOT_CUTOFF参数限制光源范围,模拟聚光灯的照射角度。最后,文章提及了实验结果和分析。
摘要由CSDN通过智能技术生成

1.      设置材料的颜色

OpenGL的光照模型根据材料反射的红、绿和蓝光的比例来模拟它的颜色。和光一样,材料也具有不同的环境、散射和镜面颜色,它们决定了材料对红、绿和蓝光的反射率。材料的环境反射属性与每种入射光的环境光成分组合,散射反射属性与入射光的散射成分组合,镜面反射属性和入射光的镜面成分组合。环境和散射属性定义了材料的颜色,它们一般很相似。

              使用的函数是glMaterial*():

void glMaterial{if} (GLenumface, GLenumpname, GLfloatparam);

void glMaterial{if}v (GLenumface, GLenumpname, constGLfloat *params);

       face可以是GL_FRONT,GL_BACK或GL_FRONT_AND BACK,表示物体的哪些面应该接受光照。pname表示设置的特定材料属性。param提供了具体的属性值。

       我们设置桌面和四条桌腿的材料如下:

void Draw_Table() // This function draws a triangle with RGB colors

{

    //定义变量

    GLfloat specular[] = { 0.6f,0.6f,0.6f,1.0f };

    GLfloat color1[] = { 0.85f,0.65f,0.2f,1.0f };//金黄色

    GLfloat color2[] = { 1.0f,0.0f,0.0f };

    GLfloat color3[] = { 0.0f,1.0f,0.0f };

    GLfloat color4[] = { 1.0f,1.0f,0.0f };

    GLfloat color5[] = { 0.0f,1.0f,1.0f };

    GLfloat color6[] = { 0.0f,0.0f,1.0f };

    //茶壶

    glPushMatrix();

    glMaterialfv(GL_FRONT, GL_SPECULAR, specular);//设置镜面颜色

    glMateriali(GL_FRONT, GL_SHININESS, 50);//设置镜面指数

    glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color1);//材料的环境和散射颜色

    glTranslatef(0, 0, 4+1);

    glRotatef(90, 1, 0, 0);

    glutSolidTeapot(1);

    glPopMatrix();

    //桌面

    glPushMatrix();

    glMaterialfv(GL_FRONT, GL_SPECULAR, color2);//设置镜面颜色</

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值