XNA入门(三)灯光和材质
来源:互联网 发布:数据库基础教程下载 编辑:程序博客网 时间:2024/04/30 09:22
光源:环境光、定向光源(例如无限远处的太阳)、点光源(灯泡)、聚光灯(手电)
private void SetupLights()//设置定向光源 {
device.Material = mtrl;
device.Lights[0].Type = LightType.Directional;
device.Lights[0].Diffuse = System.Drawing.Color.White; //灯光的颜色
device.Lights[0].Direction = new Vector3(0, 0, 4); //设置灯光方向,和三角形法线方向相反
//device.Lights[0].Direction = new Vector3(0, 0, -2);
device.Lights[0].Update(); //更新灯光设置,创建第一盏灯光
device.Lights[0].Enabled = true; //使设置有效
device.RenderState.Ambient = System.Drawing.Color.FromArgb(0x808080);//环境光的颜色
//device.RenderState.Ambient = System.Drawing.Color.FromArgb(0xffffff); //环境光增强
}
private void SetupLights()//点光源
{
device.Material = mtrl;
device.Lights[0].Type = LightType.Point;
device.Lights[0].Diffuse = System.Drawing.Color.White;
device.Lights[0].Range = 20.0f;
device.Lights[0].Position = new Vector3(0, 0, -4); //设置灯光位置,注意光线的方向
device.Lights[0].Attenuation1 = 0.2f;//衰减系数:1/(0.2d)
device.Lights[0].Enabled = true; //使设置有效
device.Lights[0].Update(); //更新灯光设置,创建第一盏灯光
device.RenderState.Ambient = System.Drawing.Color.FromArgb(0x808080);
}
private void SetupLights()//聚光灯
{
device.Material = mtrl;
device.Lights[0].Type = LightType.Spot;
device.Lights[0].Diffuse = System.Drawing.Color.White;
device.Lights[0].Range = 20.0f;
device.Lights[0].Position = new Vector3(0, 4, -6); //设置灯光位置
device.Lights[0].Direction = new Vector3(0, -4, 4); //设置灯光方向
device.Lights[0].InnerConeAngle = 0.2f; //值较大时,例如为0.5,地板变为黄色
device.Lights[0].OuterConeAngle = 0.5f; //值较大时,例如为1.0,地板变为黄色
device.Lights[0].Falloff = 1.0f;
device.Lights[0].Attenuation0 = 1.0f;
device.Lights[0].Enabled = true; //使设置有效
device.Lights[0].Update(); //更新灯光设置,创建第一盏灯光
device.RenderState.Ambient = System.Drawing.Color.FromArgb(0x808080);
反射光:环境光(Ambient Light),漫反射(Diffuse Light)和镜面反射(Specular Light)。镜面反射需要更多计算,因此D3D默认关闭镜面反射
镜面反射:(1) 材质设置 mtrl.Specular = System.Drawing.Color.White;
mtrl.SpecularSharpness = 10.0f;//反射锐度,值越小,反射光越分散
(2) 开启材质镜面高光功能: device.RenderState.SpecularEnable = true; //打开反射
材质: Material mtrl;
mtrl = new Material();
mtrl.Diffuse = System.Drawing.Color.Yellow; //物体的颜色
mtrl.Ambient = System.Drawing.Color.Red; //反射环境光的颜色
mtrl.Emissive = System.Drawing.Color.LightPink;//自发光
材质颜色透明:
mtr = new Material(); //透明正方形使用的材质
mtr.Ambient = Color.FromArgb(127, 255, 0, 0);//注意Aphla的值为127
mtr.Diffuse = Color.FromArgb(127, 255, 0, 0);
device.RenderState.DiffuseMaterialSource = ColorSource.Material;
device.RenderState.AlphaBlendEnable = true;
device.RenderState.SourceBlend = Blend.SourceColor;
device.RenderState.DestinationBlend = Blend.InvSourceAlpha;
- XNA入门(三)灯光和材质
- D3D 材质和灯光
- Unity3D之入门 (灯光 材质 预制体)
- DX中灯光和材质续
- DirectX 3D灯光和材质
- Three.JS 添加灯光、材质和阴影(第一个例子)
- d3d灯光 材质
- DX灯光与材质
- 纹理灯光材质关系
- 游戏框架其九:灯光和材质( Lights and Material )
- XNA入门(一)
- d3d设置材质与灯光
- XNA入门(四)纹理
- XNA Kick Start (三)
- 3DS MAX材质与灯光
- 3DS MAX材质与灯光
- XNA入门(二)Mdirectx框架解析
- OGRE的材质脚本 (三)
- 20110927
- DTD简介:
- dev aspxtreelist CustomCallback 事件中调用select 状态问题
- 2012百度笔试图
- Java里String的length方法
- XNA入门(三)灯光和材质
- VB socket编程入门
- java中数组的相关操做
- 20110926
- 『who are you』°、我早就该想到 是这样的结局
- 内网渗透案例
- 2011-9-27 21:37:27
- STL SET 常用操作简介[转载]
- vm8的下载地址及其激活码和介绍