如何解决如何简单地呈现ID3D11Texture2D
我正在做一个D2D / D3D互操作性程序。从外部获取ID3D11Texture2D后,将在指定区域中对其进行渲染。我尝试了CreatedxgiSurfacerendertarget但没有效果
-
下面的
-
代码,该代码“正常”运行,没有错误,并且显示了调试信息,但是界面显示黑屏。如果忽略参数纹理,则仅更改为_back_render_target-> FillRectange有效
HRESULT CGraphRender::DrawTexture(ID3D11Texture2D* texture,const RECT& dst_rect) { float dpi = GetDpiFromD2DFactory(_d2d_factory); CComPtr<ID3D11Texture2D> temp_texture2d; CComPtr<ID2D1rendertarget> temp_render_target; CComPtr<ID2D1Bitmap> temp_bitmap; D3D11_TEXTURE2D_DESC desc = { 0 }; texture->GetDesc(&desc); CD3D11_TEXTURE2D_DESC capture_texture_desc(dxgi_FORMAT_B8G8R8A8_UnorM,desc.Width,desc.Height,1,D3D11_BIND_RENDER_TARGET); HRESULT hr = _d3d_device->CreateTexture2D(&capture_texture_desc,nullptr,&temp_texture2d); RETURN_ON_FAIL(hr); CComPtr<IdxgiSurface> dxgi_capture; hr = temp_texture2d->QueryInterface(IID_PPV_ARGS(&dxgi_capture)); RETURN_ON_FAIL(hr); D2D1_RENDER_TARGET_PROPERTIES rt_props = D2D1::rendertargetProperties(D2D1_RENDER_TARGET_TYPE_DEFAULT,D2D1::PixelFormat(dxgi_FORMAT_B8G8R8A8_UnorM,D2D1_ALPHA_MODE_PREMULTIPLIED),dpi,dpi); hr = _d2d_factory->CreatedxgiSurfacerendertarget(dxgi_capture,rt_props,&temp_render_target); RETURN_ON_FAIL(hr); D2D1_BITMAP_PROPERTIES bmp_prop = D2D1::BitmapProperties(D2D1::PixelFormat(dxgi_FORMAT_B8G8R8A8_UnorM,dpi); hr = temp_render_target->CreateBitmap(D2D1::SizeU(desc.Width,desc.Height),bmp_prop,&temp_bitmap); RETURN_ON_FAIL(hr); CComPtr<ID3D11DeviceContext> immediate_context; _d3d_device->GetImmediateContext(&immediate_context); if (!immediate_context) { return E_UNEXPECTED; } immediate_context->copyResource(temp_texture2d,texture); D2D1_POINT_2U src_point = D2D1::Point2U(); D2D1_RECT_U src_rect = D2D1::RectU(0,desc.Height); hr = temp_bitmap->copyFromrendertarget(&src_point,temp_render_target,&src_rect); RETURN_ON_FAIL(hr); D2D1_RECT_F d2d1_rect = { (float)dst_rect.left,(float)dst_rect.top,(float)dst_rect.right,(float)dst_rect.bottom}; _back_render_target->DrawBitmap(temp_bitmap,d2d1_rect); return S_OK; }
-
请参阅DirectXTK,directxtk的SpritBatch代码具有简短的外观。有必要引入许多上下文设置。我还不了解这种关系。我不知道。现有代码是否有任何影响,例如设置TargetView,ViewPort甚至是Shader。
-
是否有一种相对简单有效的方法,就像ID2D1rendertarget的DrawBitmap一样简单又暴力?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。