2

Direct2D を使用して画面にレンダリングするピクセル (m_pixels) の配列があります。配列には 10,000 要素 (100 ピクセルの 100 行) が含まれます。以下のコードは、ピクセルをループして、10x10 の長方形として画面に描画します。この操作を実行するより効率的な方法はありますか? ピクセル/画像に GaussianBlur 効果を追加するにはどうすればよいですか?

m_d2dContext->BeginDraw();
m_d2dContext->Clear(ColorF(0.0f, 0.0f, 0.0f));



// Render m_pixels
// m_pixels is updated by the solver directly before render
auto rect = D2D1_RECT_F();
ComPtr<ID2D1SolidColorBrush> pBlackBrush;
DX::ThrowIfFailed(m_d2dContext->CreateSolidColorBrush(ColorF(1.0f, 0.0f, 0.0f),&pBlackBrush));

for (int i=0; i<10000; i++){
    //Update the color
    pBlackBrush->SetColor(D2D1::ColorF(m_pixels[i]*3, m_pixels[i], m_pixels[i]));
    //Update the rectangle size
    rect.top = 10*floor(i/100);
    rect.left = 10*floor(i%100);
    rect.bottom = 10*floor(i/100) + 10;
    rect.right = 10*floor(i%100) + 10;
    //Set the rectangle color
    m_d2dContext->FillRectangle(rect, pBlackBrush.Get());
}

HRESULT hr = m_d2dContext->EndDraw();
4

2 に答える 2

1

使ってみてID2D1RenderTarget::CreateBitmap()ID2D1RenderTarget::DrawBitmap()

于 2012-12-11T18:33:27.133 に答える