我的目标是在我的directx应用程序中创建纹理图集。我所拥有的是ID2D1PathGeometries的向量,需要将其放在纹理图集上。所以我创建了一个ID2D1Bitmap1,但我不知道下一步是什么。换句话说, - 我究竟如何在我需要的位置在ID2D1Bitmap1上放置ID2D1PathGeometry?
p / s /值得一提的是,我在directx中是一个新手,当我试图在msdn上寻找答案时,我一直迷失在direct2d为你提供的一切。 TUp / 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来做这种事情。但我没弄清楚,究竟是怎么回事。
答案 0 :(得分:0)
通过使用位图作为渲染目标解决了该问题。 我们的想法是创建一个新的d2d设备 创建一个新的DeviceContext 将位图设置为渲染目标 并呈现一切,需要呈现