龙书简单地看了一遍,但是大部分内容只能勉强弄懂原理,一些算法只知其然而不知其所以然。不过饭还是要一口一口地吃,图形学的一些算法需要自己多多积累学习探索,早日成竹在胸、游刃有余。
龙书中例子都很经典,但是不少例子无法编译成功,下面就是一些常见的解决方案:
①将字符集改为使用多字节字符集,这样可以解决无法从“const char”转换为“LPCWSTR”问题,当然也可以在所有字符串前面加上TEXT()。
②CD3DFont也可以使用,但是编译错误会很多,比如经典的strcpy问题,以及众多类似问题。ID3DXFont可以使用,只是速度明显比较慢。
③inFile == 0可能会报错,我们可以使用inFile.fail()函数代替。
④hlsl会遇到error x3025,网上说是使用D3DXSHADER_ENABLE_BACKWARDS_COMPATIBILITY flag,不过我添加之后依然报错(可能是该flag需要D3D)。我们可以使用一个局部变量代替LightDirection。
⑤ID3DXEffect::Pass()函数报错,请换成BeginPass(i),同时加上EndPass()。
⑥最后的Cartoon Effect例子如果出现图像重合,请将BeginPass(i)和EndPass()移到第二个for循环内。