关照的种类
环境光:经其他表面反射到达物体
漫射光:沿特定方向传播,到达某一表面后向各个方向均匀传播
镜面光:光线向同一方向反射(能模拟高亮点)
directx在通过如下函数设置光照:
光源的种类
点光源:有固定位置,并向各个方向发射
方向光:没有位置信息,所以光相互平行沿一特定方向传播
聚光灯:有位置信息,向手电筒一样发出锥形光,向特定方向传播
D3DXVECTOR3 dir(1.0f, -0.0f, 0.25f);
D3DXCOLOR color = d3d::WHITE;
D3DLIGHT9 light;
::ZeroMemory(&light, sizeof(light));
// 设置光照属性(方向光)
light.Type = D3DLIGHT_DIRECTIONAL;
light.Ambient = *color * 0.6f;
light.Diffuse = *color;
light.Specular = *color * 0.6f;
light.Direction = *dir;
Device->SetLight(0, &light);
Device->LightEnable(0, true);
Device->SetRenderState(D3DRS_NORMALIZENORMALS, true);
现实世界中我们看到的物体颜色是由该物体反射的光的颜色决定的,如红色的物体吸收所有的非红色光,反射红光所以显示为红色,使用directx中函数SetMaterial可以设置物体材质。
顶点法线描述构成多边形的各个顶点的法线,通过该法线可以确定光线到达该表面的入射角。假设一个面由三个顶点 p0,p1,p2 构成,计算得到平面的两个向量 u⃗