2016-06-21 190 views
0

我有一个第三方应用程序跟踪可访问参数(但不具有应用程序源代码)的DirectX 9 API调用,并且使用带有World_View_Projection矩阵的顶点着色器作为单个参数。出于某种目的,我需要将顶点从模型转换到世界空间,那么是否有一些方法可以使用组合的World_View_Projection矩阵(不使用单独的矩阵),并可以借助可以从原始API调用中提取的其他数据?感谢您的回答。使用刚刚组合的WVP矩阵获取世界空间顶点坐标

回答

1

您需要将世界矩阵以及世界视图投影矩阵传递给着色器。你当然可以通过世界矩阵和一个视图投影矩阵,而不是在你的着色器中进行乘法运算。或者,您可以将世界,视图和投影作为单个矩阵传递,并在着色器中创建所需的组合。

随着现代Direct3D硬件特性级别10.0或更高版本的卡,它们往往具有很大的计算能力,因此它不像在较老的Shader Model 2.0卡上那样具有预先计算矩阵之前被传递到着色器。

为什么使用Direct3D 9而不是Direct3D 11?除非你的目标是Windows XP,否则Direct3D 11是一个更好的选择。请参阅DirectX工具包tutorials

+0

我无法修改逻辑,着色器等,因为我没有源代码 - 它不是我的项目,我刚刚捕获了DirectX API调用运行的应用程序与特殊跟踪工具(apitrace),所以我只能处理与原始顶点数据和API调用参数,如该WVP矩阵 – Aonir