在DirectX / Direct2D / Direct3D中绘制多边形(三角形)

时间:2016-03-13 09:49:12

标签: c++ graphics directx direct3d direct2d

是否可以在Direct2D或Direct3D中执行类似的操作?

Cone image

我想使用Direct2D / Direct3D做类似的事情,但是像图中所示的平面2D形状。感谢

1 个答案:

答案 0 :(得分:0)

这可能不是确切的答案..但可以作为指导。

D2D1Factory*           pD2DFactory      = NULL;
ID2D1HwndRenderTarget* pD2DRenderTarget = NULL; 
ID2D1DCRenderTarget*   pD2DDCRenderTarget=NULL;
ID2D1Bitmap*           pD2DBitmap       = NULL;

D2D1CreateFactory(D2D1_FACTORY_TYPE_MULTI_THREADED,&pD2DFactory);


RECT rc = {dx,dy,dx+dw,dy+dh};
D2D1_RENDER_TARGET_PROPERTIES props = D2D1::RenderTargetProperties(
       D2D1_RENDER_TARGET_TYPE_DEFAULT,
       D2D1::PixelFormat(DXGI_FORMAT_B8G8R8A8_UNORM,D2D1_ALPHA_MODE_IGNORE),
       0,0, D2D1_RENDER_TARGET_USAGE_NONE, D2D1_FEATURE_LEVEL_DEFAULT);

pD2DFactory->CreateDCRenderTarget(&props,&pD2DDCRenderTarget);
pD2DDCRenderTarget->BindDC(hDC,&rc);
pD2DDCRenderTarget->CreateBitmap (D2D1::SizeU(sw,sh),(void*)p_bmp,pitch,
            D2D1::BitmapProperties(D2D1::PixelFormat(DXGI_FORMAT_B8G8R8A8_UNORM,D2D1_ALPHA_MODE_IGNORE)),
            &pD2DBitmap);

pD2DDCRenderTarget->BeginDraw();    
pD2DDCRenderTarget->DrawBitmap(pD2DBitmap,
            D2D1::RectF((FLOAT)dx,(FLOAT)dy,(FLOAT)dw,(FLOAT)dh),1.0,D2D1_BITMAP_INTERPOLATION_MODE_LINEAR,
            D2D1::RectF((FLOAT)sx,(FLOAT)sy,(FLOAT)sw,(FLOAT)sh));  
pD2DDCRenderTarget->EndDraw();      

SafeRelease(&pD2DBitmap);
SafeRelease(&pD2DDCRenderTarget);       
SafeRelease(&pD2DFactory);