C# SharpGL-Material材质

在上一节C# SharpGL-Light光源讲了我们身边的几个实际场景与OpenGL一些参数对应关系,其中讲到了反射光的颜色:

4、反射的光颜色:我们之所以能够看到不发光的物体,是因为这些不发光的物体能够反射照射在该物体上的光,反射出来的光的颜色=照射在物体上的光的颜色+物体本身的颜色。太阳光是白色,照射在一个红色的物体上,我们人眼看到的物体就是红色的。若光源颜色改为绿色,照射在红色物体上,我们人眼看到的物体颜色是黄色的。注意:物体本身的颜色对应到OpenGL中就是材质参数。

在此,详细说明一下OpenGL中的材质应用。
  实际生活中,不同的材质物体,呈现的颜色不一样,OpenGL中材质的定义其实就是该物体的颜色。实际呈现出来的物体颜色,应该是光源颜色和物体颜色的叠加。

材质函数:Material(uint face, uint pname, float[] parameters)
其中:
face:指定材质属性将应用于物体的那个面。
   GL_FRONT 正面
   GL_BACK 背面
   GL_FRONT_AND_BACK 双面
pname:指定设置材质那个属性,与光源设定LightParameter相似:
在这里插入图片描述
parameters:对应属性设定的值。
  重点说明一下镜面指数属性:
  GL_SHININESS:该属性只有一个值,称为“镜面指数”,取值范围是0到128。该值越小,表示材质越粗糙,点光源发射的光线照射到上面,也可以产生较大的亮点。该值越大,表示材质越类似于镜面,光源照射到上面后,产生较小的亮点。
  
  上程序,看下实际效果,仿照网上的范例和Light光源的例子,做一个地球绕太阳旋转的模型出来。
  1、设定太阳光

        float[] sun_light_position = {
    0f, 0f, 0f, 1f };//光源位置,位置性点光源
        float[] sun_light_ambient = {
    0f, 0f, 0f, 1f };//环境光
        float[] sun_light_diffuse = {
    1f, 1f, 1f, 1f };//漫反射光
        float[] sun_light_speular = {
    1f, 1f, 1f, 1f };//镜面光
        private void setLight(SharpGL.OpenGL gl)
        <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值