从directx 10到11有什么变化?我已经在directx 10中编写了一些代码,我想将其更改为directx 11.这仅仅是关于质量而我只能通过更改headrs和dll文件或函数以及编码方式来改变它吗? ING。
答案 0 :(得分:6)
首先,我要说的是,如果您只是将D3D10DoSomething()
功能更改为D3D11DoSomething()
,则不会发生任何变化。他们会做同样的事情。没有被动的收获。您必须使用明确新功能才能使您的应用更好。 D3D10没有的功能:例如硬件镶嵌,计算着色器,many many other stuff.进行编码。
所以,主要的问题是“你真的需要这个功能”吗?或者,也许,“你以后会需要这些功能吗?” 当您看到古老的D3D10代码时,您的编码是否会笑?
如果答案是肯定的:
DirectX 10到11移植非常简单。与DirectX 9到10移植相比,这只是一个笑话。
以下是将D3D10移植到D3D11时要做的简短而非详尽的清单:
#include <d3d10*>
替换为#include <d3d11*>
d3d10*.lib
替换为d3d11*.lib
设备和上下文创建:
Create*()
)和context负责状态更改功能(大多数方法为{ {1}} / Set*()
)。 Get*()
函数创建设备(现在它们已成为D3D11CreateDevice*
),请添加其他ID3D11DeviceContext
参数,并添加与D3D_FEATURE_LEVEL
相关的参数。 (更多关于功能级别here)D3D10CreateDevice*
来电更改为device->ChangeState()
其他东西:
deviceContext->ChangeState()
,直到您不需要此功能。如果您遇到与参数数量相关的编译器错误或“无法转换参数..”,只需在DirectX 11 reference中找到此函数,看看是否必须添加额外的零参数=)着色器:
好吧,大部分时间都完成了!欢迎来到D3D11世界=)