DirectX11基础 ---设备(Device)和设备上下文(Device context)

4 篇文章 0 订阅
3 篇文章 0 订阅

设备(Device)

ID3DllDevice 接口提供了许多方法来创建着色器程序对象、资源、状态对象和查询对象(等等)。它还提供了检查某些硬件特性的可用性的方法,以及许多与诊断和调试相关的方法。通常,可以将设备看作应用程序中使用的各种资源的提供者。
除了作为Direct3D 11的资源提供者,该设备还封装了特性级别(feature levels) 的概念。使用特性级别是一种允许应用程序在硬件上使用和运行Direct3D 11 API的技术,这些硬件实现了一些较老的功能,比如Direct3D 10 gpu。这允许应用程序使用同样的渲染API,但仍然针对几代硬件。

设备上下文(Device Context)

虽然设备(device) 用于创建管道使用的各种资源,但为了实际使用这些资源并操纵管道本身,我们将使用设备上下文(device context) 。设备上下文用于将创建的资源、着色器对象和状态对象绑定到管道。它们也被用来控制渲染和计算管道的执行。此外,它们还提供了操作设备创建的资源的方法。通常,设备上下文可以被看作是设备产生的资源的消费者,设备作为处理管道的接口。
设备上下文在ID3DllDeviceContext接口中实现。为了帮助引入多线程渲染支持,提供了两种不同风格的上下文。第一个称为即时上下文(immediate context),第二个称为延迟上下文(deferred context) 。虽然这两种类型实现了相同的设备上下文接口,但是它们的使用具有非常不同的语义。我们将在下面讨论这两个上下文背后的概念。

即使上下文(immediate context)

即使上下文或多或少是到渲染管线的直接链接。当从该上下文中调用方法时,Direct3D 11运行时将立即提交该方法,以便在驱动程序中执行。只允许一个即时上下文,并且在创建设备的同时创建它。这个上下文可以看作是直接与渲染管线的所有组件交互的接口。该上下文必须用作主渲染线程,并作为GPU的主接口。

延迟上下文(deferred context)

延迟上下文是一种次要的上下文类型,它提供了一种线程安全机制,用于记录来自次要线程(主渲染线程除外)的一系列命令。这用于生成一个命令列表对象,该对象可以稍后在即时上下文中“回放”。允许从其他线程生成命令列表提供了在多核CPU系统上发现性能改进的一些可能性。此外,Direct3D 11还允许在多个线程上执行异步资源创建,这提供了简化多线程加载情况的能力。当考虑到当前和未来的PC硬件环境时,这些都是很重要的概念,我们可以期望在给定的PC中有越来越多的CPU内核可用。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值