You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何打开共享纹理的 Direct2D

要在Direct2D中打开共享纹理,需要遵循以下步骤:

  1. 创建共享纹理: 首先,使用Direct3D创建一个共享纹理。确保将共享标志设置为D3D11_RESOURCE_MISC_SHARED。
ID3D11Texture2D* pSharedTexture = nullptr;
D3D11_TEXTURE2D_DESC desc = { 0 };
desc.Width = width;
desc.Height = height;
desc.MipLevels = 1;
desc.ArraySize = 1;
desc.Format = DXGI_FORMAT_B8G8R8A8_UNORM;
desc.SampleDesc.Count = 1;
desc.Usage = D3D11_USAGE_DEFAULT;
desc.BindFlags = D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE;
desc.CPUAccessFlags = 0;
desc.MiscFlags = D3D11_RESOURCE_MISC_SHARED;

device->CreateTexture2D(&desc, nullptr, &pSharedTexture);
  1. 获取共享句柄: 使用ID3D11Texture2D接口的QueryInterface方法获取ID3D11Resource接口,然后使用该接口的GetSharedHandle方法获取共享句柄。
ID3D11Resource* pResource = nullptr;
pSharedTexture->QueryInterface(IID_ID3D11Resource, (void**)&pResource);

HANDLE sharedHandle;
pDevice->CreateSharedHandle(pResource, nullptr, GENERIC_ALL, 0, &sharedHandle);
  1. 创建Direct2D设备和设备上下文: 创建Direct2D设备和设备上下文,以便在Direct2D中使用共享纹理。
ID2D1Device* pD2DDevice = nullptr;
ID2D1DeviceContext* pD2DDeviceContext = nullptr;

D2D1CreateDevice(nullptr, nullptr, &pD2DDevice);
pD2DDevice->CreateDeviceContext(D2D1_DEVICE_CONTEXT_OPTIONS_NONE, &pD2DDeviceContext);
  1. 打开共享纹理: 使用Direct2D设备上下文的CreateBitmapFromDxgiSurface方法打开共享纹理。
ID2D1Bitmap1* pD2DBitmap = nullptr;

pD2DDeviceContext->CreateBitmapFromDxgiSurface(pSharedSurface, nullptr, &pD2DBitmap);

完整的代码示例如下:

#include <d3d11.h>
#include <d2d1_1.h>

void OpenSharedTexture()
{
    // 创建共享纹理
    ID3D11Texture2D* pSharedTexture = nullptr;
    D3D11_TEXTURE2D_DESC desc = { 0 };
    desc.Width = width;
    desc.Height = height;
    desc.MipLevels = 1;
    desc.ArraySize = 1;
    desc.Format = DXGI_FORMAT_B8G8R8A8_UNORM;
    desc.SampleDesc.Count = 1;
    desc.Usage = D3D11_USAGE_DEFAULT;
    desc.BindFlags = D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE;
    desc.CPUAccessFlags = 0;
    desc.MiscFlags = D3D11_RESOURCE_MISC_SHARED;

    device->CreateTexture2D(&desc, nullptr, &pSharedTexture);

    // 获取共享句柄
    ID3D11Resource* pResource = nullptr;
    pSharedTexture->QueryInterface(IID_ID3D11Resource, (void**)&pResource);

    HANDLE sharedHandle;
    pDevice->CreateSharedHandle(pResource, nullptr, GENERIC_ALL, 0, &sharedHandle);

    // 创建Direct2D设备和设备上下文
    ID2D1Device* pD2DDevice = nullptr;
    ID2D1DeviceContext* pD2DDeviceContext = nullptr;

    D2D1CreateDevice(nullptr, nullptr, &pD2DDevice);
    pD2DDevice->CreateDeviceContext(D2D1_DEVICE_CONTEXT_OPTIONS_NONE, &pD2DDeviceContext);

    // 打开共享纹理
    ID2D1Bitmap1* pD2DBitmap = nullptr;
    DXGI_SURFACE_DESC surfaceDesc = { 0 };
    surfaceDesc.Width = width;
    surfaceDesc.Height = height;
    surfaceDesc.Format = DXGI_FORMAT_B8G8R8A8_UNORM;
    surfaceDesc.SampleDesc.Count = 1;
    surfaceDesc.SampleDesc.Quality = 0;

    pD2DDeviceContext->CreateBitmapFromDxgiSurface(pSharedSurface, &surfaceDesc, &
本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
面向开发者的云福利中心,ECS 60元/年,域名1元起,助力开发者快速在云上构建可靠应用

社区干货

OpenGl开发图形绘制详解

>OpenGl ES是免费的跨平台的功能完善的2D/3D图形库接口的API,是OpenGL的一个子集。移动端使用到的基本上都是OpenGl ES,当然Android开发下还专门为OpenGl提供了android.opengl包,并且提供了GlSurfaceView,GLU,GlU... ByteBuffer bb = ByteBuffer.allocateDirect(triangleCoords.length * 4); // 数组排列用nativeOrder bb.order(ByteOrder.nativeOrder()); // 从ByteBuffer创建一个浮点缓冲区 ...

火山引擎大规模机器学习平台架构设计与应用实践

需要数千个计算实例能同时访问的高性能共享存储。这些都给存储带来了非常大的压力。* **易用性**:在使用一些框架的时候我们希望读写存储能够像读本地文件一样方便,这就需要存储接口友好,代码零修改,兼容 POSIX。... 支持 GPU Direct Access。* **并行文件系统 vePFS**:百 Gb 带宽,亚毫秒延迟,支持数亿小文件随机读取。![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/94876b5cf1cd48b19...

ByteFUSE的演进与落地

自动将来自该Client的请求Redirect到新的活着的Proxy,该机制对客户端是完全透明的。但是使用TTGW具有以下缺点:* **无法支持大吞吐场景:**用户的吞吐不仅受限于TTGW集群本身吞吐的限制,而且受限于NFS协议单次读... 以支持在K8S集群中使用ByteFUSE访问ByteNAS集群,其架构如下图所示:![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/7f2d6a199b2049ed9ddb8023eca7c0d4~tplv-tlddhu82om-im...

基于大数据、大模型的应用总结与技术心得|社区征文

提前打开热水器等等,提高居家的舒适体验和便利性。 # 大数据、大模型的技术心得 在今年我从事的工作中,人脸识别项目占了很大的比重,最先进的面部识别算法是使用数百万张图像进行训练的。通过互联网作为资源... 在生成对抗网中输入是人脸的随机纹理和背景,还有随机的形状、表情和姿势参数。然后使用可微分渲染器将随机头部形状渲染为生成的“背景图像”,其中面部纹理纹理生成器提供,该纹理生成器从大量数据中从头开始学习的...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

如何打开共享纹理的 Direct2D-优选内容

OpenGl开发图形绘制详解
>OpenGl ES是免费的跨平台的功能完善的2D/3D图形库接口的API,是OpenGL的一个子集。移动端使用到的基本上都是OpenGl ES,当然Android开发下还专门为OpenGl提供了android.opengl包,并且提供了GlSurfaceView,GLU,GlU... ByteBuffer bb = ByteBuffer.allocateDirect(triangleCoords.length * 4); // 数组排列用nativeOrder bb.order(ByteOrder.nativeOrder()); // 从ByteBuffer创建一个浮点缓冲区 ...
进阶功能
说明 拉流 SDK 默认开启了 QUIC 协议拉流的失败降级策略,无需额外配置。如果 QUIC 协议拉流失败,SDK 将自动降级为 TCP 协议拉流。 使用 IP 地址拉流播放器支持通过设置播放域名的 IP 地址进行拉流,以降低播放首帧... 承载用于 OpenGL 渲染的纹理数据 buffer ByteBuffer 当 bufferType 为 VeLivePlayerVideoBufferTypeByteBuffer 时的视频数据,承载用于 JNI 层的 Direct Buffer data byte[] 当 bufferType 为 VeLivePlayerVideoBuf...
火山引擎大规模机器学习平台架构设计与应用实践
需要数千个计算实例能同时访问的高性能共享存储。这些都给存储带来了非常大的压力。* **易用性**:在使用一些框架的时候我们希望读写存储能够像读本地文件一样方便,这就需要存储接口友好,代码零修改,兼容 POSIX。... 支持 GPU Direct Access。* **并行文件系统 vePFS**:百 Gb 带宽,亚毫秒延迟,支持数亿小文件随机读取。![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/94876b5cf1cd48b19...
ByteFUSE的演进与落地
自动将来自该Client的请求Redirect到新的活着的Proxy,该机制对客户端是完全透明的。但是使用TTGW具有以下缺点:* **无法支持大吞吐场景:**用户的吞吐不仅受限于TTGW集群本身吞吐的限制,而且受限于NFS协议单次读... 以支持在K8S集群中使用ByteFUSE访问ByteNAS集群,其架构如下图所示:![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/7f2d6a199b2049ed9ddb8023eca7c0d4~tplv-tlddhu82om-im...

如何打开共享纹理的 Direct2D-相关内容

基于大数据、大模型的应用总结与技术心得|社区征文

提前打开热水器等等,提高居家的舒适体验和便利性。 # 大数据、大模型的技术心得 在今年我从事的工作中,人脸识别项目占了很大的比重,最先进的面部识别算法是使用数百万张图像进行训练的。通过互联网作为资源... 在生成对抗网中输入是人脸的随机纹理和背景,还有随机的形状、表情和姿势参数。然后使用可微分渲染器将随机头部形状渲染为生成的“背景图像”,其中面部纹理纹理生成器提供,该纹理生成器从大量数据中从头开始学习的...

实战:超低延时直播技术的落地实践

知识共享等内容,通过移动端互动直播的形式得以更加高效的展现传播,既让优质的直播内容可以实现爆发式传播扩散,又可以让用户有更多的机会感受,学习甚至主动参与直播互动,实现内容供给侧和需求传播的多方共赢。>> ... 而视频编码开启 B 帧会引入额外的延迟,影响通话体验。但在直播场景,对延迟的要求比 RTC 要宽松很多,而开启 B 帧能提高视频压缩效率,可以提升画质或者节省带宽成本,所以在直播场景开启 B 帧是很普遍的做法。 ...

进阶功能

外部视频源 推流引擎支持传入 OpenGL 纹理 、ByteBuffer 和 ByteArray 格式的视频数据。 说明 OpenGL 纹理支持 2D 和 OES 格式; 二进制数据支持视频帧像素格式 I420; 二进制数据必须传入视频帧的宽高属性; OpenGL 纹理必须和用推流引擎使用相同的 OpenGL 环境,可以通过 VeLivePusher.getEGLContext() 获取。 推流引擎开启外部视频采集。代码示例如下所示:java mLivePusher.startVideoCapture(VeLiveVideoCaptureExternal); 送入...

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

字节跳动 Flink 基于 Slot 的资源管理实践

=&rk3s=8031ce6d&x-expires=1714666850&x-signature=Bm0h9TCm80GKEJtJvtpOh0A2deU%3D)Slot 是 Flink 集群管理资源的最小单位,也是 Flink 作业申请和释放资源的单位。本文主要介绍字节跳动 Flink 基于 Slot... 其中堆外内存又被分为 Managed Memory 和 Direct Memory,对具体内存划分有兴趣的小伙伴可以检索 Flink 内存模型详细了解。这里我们要说的是 Managed Memory,这部分内存不会预先分配,但是会按照 Slot 划分大小。简...

iOS(v4.1.0.0及以上)

项目中加入 SDK 项目中已使用 cocoapods,下一步参考 3,否则参考 2 在项目根目录,执行 pod init && pod install,可得到 Podfile 文件 打开 iossample 文件夹,拷贝 BytedEffectSDK.podspec、libeffect-SDK.a、includ... 它只能处理 2D 纹理并将结果输出到传入的 2D 纹理 outputTexture 中,如果当前的项目中无法直接拿到 2D 纹理,可以先试用 BEImageUtils 进行格式转换,这个类可以进行 CVPixelBuffer/Texture/Buffer 几种数据的转换,可...

字节前端分享|酷炫的可视化大屏代码开源了!

还可以支持更多图元的纹理装饰。 ![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/32ac144b92744cb4bf03d29f23f982ef~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-... direct)[![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/14c90d502b2d4e5381adabe51fb023ff~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1714666832&x-signatu...

基于深度学习的工业缺陷检测详解——从0到1|社区征文

(https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/6f3e58c77f2d45b392b465cb8b83073d~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1714666847&x-signature=9ueAgWvKQ08T%2FOKi%2BkqX... 因此PAN它自底向上的增强就可以让顶层特征图也能充分共享到网络底层特征,提升大目标的检测效果。Head检测头用于回归输出预测框的位置和类别。它通过1×1卷积运算输出了三组特征图,就是图中的三组蓝色方块,每组特...

Android(v4.1.0.0及以上)

项目中加入SDK 打开压缩包 byted_effect_andr.zip,找到 effect-SDKXXX.aar 文件 拷贝其到项目中的主模块(一般是 app)的 libs 目录下,如拷贝到 app/libs/ 目录(没有 libs 文件夹,可手动创建) 打开主模块(一般是 app... 对应的函数为: java // 将输入纹理转换出人脸为正的2D纹理 ProcessInput input = transToPortrait(); // 准备帧缓冲区纹理对象 int dstTexture = mImageUtil.prepareTexture(input.getWidth(), input.getHeight()...

BPO:灵活的 Prompt 对齐优化技术

(https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/fae2d9b7b08148a1ac48571457468014~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1714666859&x-signature=sYag7vSluhn5EMCU3491f%2B... 和 DPO(Direct Preference Optimization)的效果,并且能够和这些方法相结合进一步提升模型效果。![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/fbdc7622b77e4e88a14e216fa5...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

产品体验

体验中心

云服务器特惠

云服务器
云服务器ECS新人特惠
立即抢购

白皮书

一图详解大模型
浓缩大模型架构,厘清生产和应用链路关系
立即获取

最新活动

爆款1核2G共享型服务器

首年60元,每月仅需5元,限量秒杀
立即抢购

火山引擎增长体验专区

丰富能力激励企业快速增长
查看详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询