您的位置:首页 > 其它

(二) Direct3D上下文管理(上)(微软官方文档DXVA翻译)

2015-03-19 15:33 399 查看
Direct3D 上下文管理(上)

原文链接:https://msdn.microsoft.com/en-us/library/windows/hardware/ff552845(v=vs.85).aspx

1.总结:

一个上下文包含应用程序创建的Direct3D硬件抽象层的状态信息,也就是说,上下文描述了驱动应该如何绘制。其中状态信息包括被绘制的surface,深度surface, 着色器信息和文理信息。

一个Direct3D驱动负责创建和管理其自身的渲染上下文。

2.创建与销毁一个context

(1)驱动必须创建并厨师互一个设备指定的context,该context包含了执行渲染需要的状态信息。状态在contexts之间是不能共享的,所以驱动必须针对每一个创建的context处理全部的状态信息。

(2)创建一个context时,必须做如下工作

i:申请设备指定的上下文并初始化为0.

ii:当创建Direct3D HAL设备时,调用D3dContextCreate回调函数完成额外的操作。

驱动必须能够引用所有在一个context内通过D3dCreateSurfaceEx函数创建的纹理的句柄。

当应用程序要求Direct3D HAL被销毁时,调用D3dContextDestroy销毁context.

3.在一个context内维护状态

当D3dDrawPrimitives2回调函数被调用时,驱动更新在context内的内部状态。这一回调函数同时将更新后的状态返回给Direct3D.

4.Direct3D surface 句柄

(1)所有的suface通过handle引用被嵌入命令流中。高频率的操作surface时,驱动可以通过hanlde来查找对应的surface,而不需要通过其他的辅助函数进行加锁重新存储等操作。

(2)对于句柄的管理是由D3dCreateSurfaceEx来完成的。当DdCanCreateSurface和DdCreateSurface被调用后立即调用该函数。在调用该函数的时候,驱动将所有DirectDraw运行时的surface有关的信息拷贝倒属于自己的描述Surface的结构体中。

(3)针对每一个设备和每一个进程,句柄是由运行时保证唯一的。对于每一个context,句柄并不能保证唯一性。一些冲突详细的在Driver-Side Surface结构体中详细处理。

注: 由于笔者水平有限,难免有误,有不足之处望海涵批评指正。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐