一种Directx纹理资源互操作系统及方法与流程

文档序号:12604463阅读:584来源:国知局
一种Directx纹理资源互操作系统及方法与流程

本发明涉及图像处理技术领域,具体涉及一种Directx纹理资源互操作系统及方法。



背景技术:

目前图像采集卡一般采用Direct3D技术显示捕捉到的图像数据、为了采用Direct3D图形流水线来处理采集卡捕捉获得图像数据,一般做法是先把图像数据发送到系统内存,然后根据系统内存中的图像数据创建动态纹理,再利用Direct3D图形流水线完成对图像数据的处理以及显示。

多媒体编程接口Directx3D 11集成在Windows 7中。Directx3D11带来了Tessellation(拆嵌式细分曲面技术)、Multi-Threading(多线程)、DirectCompute(通用计算)、Shader Model 5.0(渲染引擎5.0)以及Texture Compression(纹理压缩)五个重要特性,为用户带来更好的视觉享受。

多媒体编程接口Directx3D 12集成在Windows 10中,其相对于D3D11最重要的变化就是更底层API(Application Programming Interface,应用程序编程接口),这一点很像AMD Mantle,Directx3D 12在硬件抽象层上更深入,能够同时减轻CPU、GPU的过载。并且使用Directx3D 12的应用可追踪GPU流水线、控制资源状态转换,比如从渲染目标到纹理,同时Directx3D 12可控制资源重命名,更少的API和驱动跟踪,可预判属性。

在2D纹理的读写方面,Directx3D 11通过一个设备环境上下文利用Map或Unmap对纹理进行更新写操作。然而在Directx3D 11上所有的纹理,都不允许直接的进行写操作,必须通过另一个ID3D12Resource所代表的Buffer来对纹理进行更新,无法实现在Directx3D 11设备上操作Directx3D 12的资源。



技术实现要素:

针对现有技术中存在的缺陷,本发明的目的在于提供一种Directx纹理资源互操作系统及方法,能够在Directx3D11接口上操作Directx3D12资源。

为达到以上目的,本发明采取的技术方案是:

一种Directx纹理资源互操作的系统,用于Directx3D11与Directx3D12纹理资源互操作,包括:

设备创建单元,用于在Directx3D12设备上创建Directx3D11接口;

资源包装单元,用于将Directx3D12资源包装成Directx3D11可用的资源并供所述Directx3D11接口使用。

在上述技术方案的基础上,所述Directx3D12资源为可在Directx3D12设备上直接使用的纹理资源。

在上述技术方案的基础上,Directx3D11资源为在Directx3D11接口上直接使用的纹理资源。

一种Directx纹理资源互操作的方法,用于Directx3D11与Directx3D12纹理资源互操作,包括如下步骤:

S1,在Directx3D12设备上创建Directx3D11接口;

S2,将Directx3D12资源包装成Directx3D11接口可用资源;

S3,所述Directx3D11接口操作包装成Directx3D11资源的Directx3D12资源,实现Directx3D11与Directx3D12纹理资源互操作。

在上述技术方案的基础上,步骤S1包括:

在Directx3D12设备上调用D3D11On12CreateDevice函数,分别创建一个Directx3D11接口指针和一个Directx3D11接口环境上下文指针;

调用Directx3D11接口的QeuryInterface函数获取运行在Directx3D12设备上的Directx3D11接口。

在上述技术方案的基础上,步骤S1还包括:

判断QeuryInterface函数获取Directx3D11接口的操作是否成功,若成功,则继续执行S2,若失败,则结束。

在上述技术方案的基础上,步骤S2包括:

调用Directx3D11接口的创建资源包装函数,将Directx3D12设备的Directx3D12资源包装成Directx3D11资源。

在上述技术方案的基础上,步骤S2还包括:判断ctx3D12资源包装成Directx3D11资源的操作是否成功,若成功,则继续执行S3,若失败,则结束。

在上述技术方案的基础上,Directx3D12资源为在Directx3D12设备上直接使用的纹理。

在上述技术方案的基础上,Directx3D11资源为在Directx3D11接口上直接使用的纹理资源。

与现有技术相比,本发明的优点在于:

本发明的Directx纹理资源互操作系统及方法,通过在Directx3D12设备上创建一个Directx3D11接口,将Directx3D12资源包装成能够在Directx3D11接口上使用的资源,完成了Directx3D11与Directx3D12纹理资源互操作,实现了跨版本资源的连贯性和互通性。

附图说明

图1为本发明实施中的方法流程图;

图2为本发明实施例中的系统框图。

具体实施方式

以下结合附图及实施例对本发明作进一步详细说明。

参见图2所示,本发明实施例提供一种Directx纹理资源互操作的系统,包括:

设备创建单元,用于在Directx3D12设备上创建在其上运行的Directx3D11接口;Directx3D11接口是微软提供的一组2D或者3D图形编辑接口,其集成在Windows7中,Directx3D12设备是Directx3D11接口的高一级版本,其集成在Windows10中,Directx3D12设备在面向程序员进行编程时能够在执行GPU相关指令时,GPU与CPU同步,这是Directx3D11接口所不具有的功能,在程序性能上产生较大的影响。

资源包装单元,用于将Directx3D12资源包装成Directx3D11资源;Directx3D12资源为在Directx3D12设备上直接使用的纹理资源,Directx3D11资源为在Directx3D11接口上直接使用的纹理资源。在Directx3D11资源的读写方面,Directx3D11接口可以利用设备上下文环境进行更新写操作,而在Directx3D12设备上所有的Directx3D12资源都不允许直接进行写操作,因此在Directx3D12设备不能够直接执行Directx3D11资源,需要将Directx3D12资源包装成Directx3D11资源。

参见图1所示,一种Directx纹理资源互操作的方法,包括如下步骤:

S1,在Directx3D12设备创建运行在其上的Directx3D11接口;

在Directx3D12设备上调用D3D11On12CreateDevice函数,分别创建一个Directx3D11接口指针和和一个Directx3D11接口的ID3D11DeviceContext设备环境上下文指针;其中,Directx3D12设备为调用ID3D12Device接口,用于创建资源、视图、命令列表等;

调用Directx3D11接口的QeuryInterface函数获取运行在Directx3D12设备上的Directx3D11接口,Directx3D11接口为ID3D11Device接口,用于创建资源、视图、设备环境等;

判断QeuryInterface函数获取Directx3D11接口的操作是否成功,若成功,则继续执行S2,若失败,则结束。

S2,Directx3D12设备将其自身的Directx3D12资源经Directx3D11接口包装成Directx3D11资源;调用Directx3D11接口的创建资源包装函数,通过CreateWrappedResource方法将Directx3D12设备的Directx3D12资源包装成Directx3D11资源;

判断Directx3D12资源包装成Directx3D11资源的操作是否成功,若成功,则继续执行S3,若失败,则结束。

其中,Directx3D12资源为在Directx3D12设备上直接使用的纹理资源;Directx3D11资源为在Directx3D11接口上直接使用的纹理资源。

S3,在Directx3D12设备上的Directx3D11接口操作包装成Directx3D11资源的Directx3D12资源。

本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1