(二) 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结构体中详细处理。
注: 由于笔者水平有限,难免有误,有不足之处望海涵批评指正。
原文链接: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结构体中详细处理。
注: 由于笔者水平有限,难免有误,有不足之处望海涵批评指正。
相关文章推荐
- (三) Direct3D 上下文管理(下) ---微软官方文档翻译
- (一)Direct3D 驱动初始化(微软官方文档翻译)
- Sencha Touch 2 官方文档翻译之 Managing Dependencies with MVC(管理MVC依赖项)
- jquery.fullCalendar官方文档翻译(一款小巧好用的日程管理日历, 可集成Google Calendar)
- jquery.fullCalendar官方文档翻译(一款小巧好用的日程管理日历, 可集成Google Calendar)
- ABP官方文档翻译 2.5 设置管理
- Orchard官方文档翻译(九) 新增并管理媒体资源
- Sencha Touch 2 官方文档翻译之 Managing Dependencies with MVC(管理MVC依赖项)
- jquery.fullCalendar官方文档翻译(一款小巧好用的日程管理日历, 可集成Google Calendar)
- Orchard官方文档翻译(十) 管理Widgets
- Managing Bitmap Memory管理bitmap内存(Android官方文档翻译——四)
- MongoDB用户和角色管理(源自对官方文档的翻译并总结——Manage Users and Roles)
- OneNote 2013 预览版微软官方介绍文档——个人整理翻译版
- jquery.fullCalendar官方文档翻译(一款小巧好用的日程管理日历, 可集成Google Calendar)
- 第三章 HTTP状态管理--httpclient4 中文版帮助文档,最新官方版翻译版(三)
- Oracle 12c 12.1.0.1.0管理控制文件官方文档翻译说明
- 如何配置OpenGL ES的上下文(OpenGL ES2.0官方文档翻译)
- jquery.fullCalendar官方文档翻译(一款小巧好用的日程管理日历, 可集成Google Calendar)
- 视图控制器中的资源管理 Resource Management in View Controllers [苹果官方文档的翻译]
- 转】第三章 HTTP状态管理--httpclient4 中文版帮助文档,最新官方版翻译版