Direct2D的。纹理图集创作

时间:2016-01-18 16:14:16

标签: c++ windows-store-apps directx uwp direct2d

我的目标是在我的directx应用程序中创建纹理图集。我所拥有的是ID2D1PathGeometries的向量,需要将其放在纹理图集上。所以我创建了一个ID2D1Bitmap1,但我不知道下一步是什么。换句话说, - 我究竟如何在我需要的位置在ID2D1Bitmap1上放置ID2D1PathGeometry?

p / s /值得一提的是,我在directx中是一个新手,当我试图在msdn上寻找答案时,我一直迷失在direct2d为你提供的一切。 TU

p / p / s代码要求: 正如我已经提到的那样,没有多少表现出来。

std::vector<Microsoft::WRL::ComPtr<ID2D1PathGeometry>> atlasGeometries; // so i have my geometries
////than i fill the vector
{
....
}
////Creating Bitmap for font sheet
Microsoft::WRL::ComPtr<ID2D1Bitmap1> bitmap;
D2D1_SIZE_U dimensions;
dimensions.height = 1024;
dimensions.width = 1024;

D2D1_BITMAP_PROPERTIES1  d2dbp;
D2D1_PIXEL_FORMAT d2dpf;
FLOAT dpiX;
FLOAT dpiY;

d2dpf.format = DXGI_FORMAT_A8_UNORM;
d2dpf.alphaMode = D2D1_ALPHA_MODE_PREMULTIPLIED;

this->dxDevMt.GetD2DFactory()->GetDesktopDpi(&dpiX, &dpiY);

d2dbp.pixelFormat = d2dpf;
d2dbp.dpiX = dpiX;
d2dbp.dpiY = dpiY;
d2dbp.bitmapOptions = D2D1_BITMAP_OPTIONS_TARGET;
d2dbp.colorContext = nullptr;

newCtx->CreateBitmap(dimensions, nullptr, 0, d2dbp, bitmap.GetAddressOf());

但我接下来要做的就是追求我。我想通了,我应该使用RenderTarget来做这种事情。但我没弄清楚,究竟是怎么回事。

1 个答案:

答案 0 :(得分:0)

通过使用位图作为渲染目标解决了该问题。 我们的想法是创建一个新的d2d设备 创建一个新的DeviceContext 将位图设置为渲染目标 并呈现一切,需要呈现