作为一种学习经历,我正在编写一个立即模式管理的DirectX 9应用程序。
我手动计算场景中所有三角形的顶点法线以允许平滑的Gouraud着色。
这可以按预期工作,但我猜这不是最有效的方法。有可能让GPU为我做这个吗?
答案 0 :(得分:3)
理论上,您可以在顶点着色器中生成顶点法线。这涉及每次使用该着色器渲染网格时的计算,所以为什么不提前生成它们。
如果你的意思是你想在渲染之前生成它们,但是使用GPU而不是CPU,我会说加速你只会做一次的事情是不值得的。此外,我不确定DX9是否有办法从着色器(DX10)获取计算出的顶点信息。
总而言之,在大多数情况下最好的做法是传统的:在程序中计算顶点法线,以保存包含网格的数据文件 - 将其作为预计算步骤。通常你有网格来自像Max或Maya这样的3d包,因为法线中有艺术信息,除非你知道整个网格应该是完全平滑的(或刻面的),在一般情况下它是不可计算的
答案 1 :(得分:2)