从ID3D11Texture2D到ID2D1Bitmap,可以吗?

用户名

我正在开发游戏的扩展程序,该程序仅打开HDC,供插件开发人员使用。

但是,我已经用尽了GDI + / Direct2D绘图功能,该功能对于我想要实现的速度已经足够快了-图像效果(添加,混合,乘以混合等)。

我很清楚Direct2D提供了一个效果工具包,但是它需要平台更新(适用于Windows 7),这一点都不理想。

因此,我只剩下Direct3D。MSDN / Google搜索提供了许多执行D2D-> D3D的方法,但是ZERO显示了如何执行D3D-> D2D。我知道有一种方法可以转换D3D-> D2D,即映射和复制像素数据,但是效率很低,因为(如果我是对的话)它是从GPU VRAM-> CPU / RAM-> GPU VRAM传输的。我可能只会将其用作最后的选择。

或者,如果有人对如何从D3D11中的RenderTarget抓取HDC有任何想法,以便可以使用BitBlt,它也可能起作用。

如果有人可以帮助我,我将不胜感激。

用户名

好,我知道了。可能不是最有效的,但可以完成工作。没有memcpy,bitblt(尽管在内存中的CreateBitmap内部可能具有这些功能)。也避免所有DXGI版本的废话。

    D3D11_TEXTURE2D_DESC td;
    m_backBufferTexture->GetDesc(&td);
    td.Usage = D3D11_USAGE_STAGING;
    td.BindFlags = 0;
    td.CPUAccessFlags = D3D11_CPU_ACCESS_READ;

    m_pDevice->CreateTexture2D( &td, NULL, &(m_pNewTexture) );
    m_pContext->CopyResource(m_pNewTexture, m_backBufferTexture);
    m_pNewTexture->QueryInterface(__uuidof(IDXGISurface), (void**)&m_NewTextDXGI);

    DXGI_MAPPED_RECT bitmap2Dmap;
    m_NewTextDXGI->Map(&bitmap2Dmap,DXGI_MAP_READ);

    D2D1_PIXEL_FORMAT desc2d;
    D2D1_BITMAP_PROPERTIES bmpprops;

    desc2d.format = DXGI_FORMAT_B8G8R8A8_UNORM;
    desc2d.alphaMode = D2D1_ALPHA_MODE_IGNORE; // Adapt to your needs.      

    bmpprops.dpiX = 96.0f;
    bmpprops.dpiY = 96.0f;
    bmpprops.pixelFormat = desc2d;


    D2D1_SIZE_U size = D2D1::SizeU(
    dim.x,
    dim.y
    ); // Adapt to your own size.

    pRT->CreateBitmap(size,(void*)bitmap2Dmap.pBits,bitmap2Dmap.Pitch,bmpprops,&m_pD2DBitmap);
    m_NewTextDXGI->Unmap();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

下铸ID3D11Texture2D

来自分类Dev

来自ID3D11Texture2D的HBitmap

来自分类Dev

D3D11屏幕桌面复制到ID3D11Texture2D

来自分类Dev

从 .bmp 文件加载 ID2D1Bitmap

来自分类Dev

检索要通过网络发送的ID3D11Texture2D数据

来自分类Dev

更改ID3D11Texture2D像素格式

来自分类Dev

检索要通过网络发送的ID3D11Texture2D数据

来自分类Dev

将ID2D1Effect输出存储在ID2D1Bitmap / Image中以在以后绘制它吗?

来自分类Dev

How to convert a image file loaded in memory to a ID2D1Bitmap in C++

来自分类Dev

重新呈现时水平翻转ID2D1Bitmap

来自分类Dev

如何在C ++中将内存中加载的图像文件转换为ID2D1Bitmap

来自分类Dev

ID2D1Bitmap1 :: Map问题

来自分类Dev

从Texture2D到Texture3D

来自分类Dev

D盘安装Python可以吗?

来自分类Dev

Texture2D到前面

来自分类Dev

ID2D1HwndRenderTarget :: CreateBitmapFromWicBitmap()

来自分类Dev

将24位BGR图像从内存加载到ID2D1Bitmap1的最佳方法

来自分类Dev

Texture2D到base64-Unity3d Web Player

来自分类Dev

Texture2D到base64-Unity3d Web Player

来自分类Dev

directx11-无法将Texture2D设置为ShaderResourceView吗?

来自分类Dev

Texture2D到byte []到String

来自分类Dev

使用libav *将原始帧(D3D11Texture2D)编码为rtsp流

来自分类Dev

ID3D11ShaderResourceView的尺寸。

来自分类Dev

Consulo IDE for C#mono和Unity3d,可以吗?

来自分类Dev

unity3d和git子模块可以吗?

来自分类Dev

用于C#mono和Unity3d的Consulo IDE,可以吗?

来自分类Dev

在d驱动器上安装python可以吗?

来自分类Dev

获取提交类型的ID?可以吗?

来自分类Dev

DirectX11中Texture2D和Texture2DMS之间的区别