很多时候不知道程序为什么没有按预想的方式运行,
到底是哪里错了呢。。才发现原来是坐标错了,颜色错了,或者是填充的模式错了。。。
这些都是一些微不足道难以寻找的错误啊,
只能够靠细心还有经验堆积起来才能够避免。
附上光照图
4个物体坐标分别在
D3DXMatrixTranslation(&MeshWorldMetrices[0],-2.0f,-2.0f,0.0f); //血小板
D3DXMatrixTranslation(&MeshWorldMetrices[1],2.0f,-2.0f,0.0f); //黄茶壶
D3DXMatrixTranslation(&MeshWorldMetrices[2],-2.0f,2.0f,0.0f); //蓝盒子
D3DXMatrixTranslation(&MeshWorldMetrices[3],2.0f,2.0f,0.0f); //绿球体
1.方向光
从(0.0f,0.0f,8.0f)->到(0.0f,0.0f,0.0f) 2.点光源(0.0f,0.0f,0.0f)->(*,*,*)
聚光灯,发射的位置在(0.0f,0.0f,8.0f)->
3.->血小板 4.->黄茶壶 5.->蓝盒子 6.->绿球体
或是停停顿顿,或是懒懒散散的学习了两天,光照这一部分总算熟练了。
于2012/4/23:
上文才刚刚说完。。又犯了低级的错误了,
那四幅spotlight的图就是有一点怪怪的,我注意到照射的位置正确与否,可是没有注意到真正确切的效果,
上面我设定了
light.Phi = 0.0f;
light.Theta = 0.4f;
而实际上dx中规定的Phi是聚光灯锥体的大角,而Theta是较小的内角
不过也算另一种好处吧,就是我知道了当Phi小于Theta的情况,就是Theta的所照是黑暗的,然后Phi所照的范围是全景的,(话说这样好别扭。。)
所以,预期的效果应该是这样才对:
我设为
light.Phi = 0.4f;
light.Theta = 0.0f;
这里的图片会占用很多的带宽的,我想。