Xlib рисует пиксели быстро и эффективно - PullRequest
0 голосов
/ 17 февраля 2020

Я хочу рисовать пиксели, используя Xlib, я пытался оптимизировать свой код, но XDrawPoint () занимает много времени. Для 120 000 пикселей (окно 300 x 400) на рисование уходит около одной секунды.

void sp::renderer::draw(pixel& drawablePixel)
{
     m_grahpics_values.foreground = drawablePixel.getColor().getHexRGB();
     XChangeGC(ptr_display, m_graphic_context, GCForeground, &m_grahpics_values);

     XDrawPoint(ptr_display, m_pixelMap, m_graphic_context, drawablePixel.getPosition().x, drawablePixel.getPosition().y);
}

А затем я отображаю его с помощью XcopyArea ()

void sp::renderer::display()
{
    XGCValues gr_values;
    GC gr_context;
    XChangeGC(ptr_display, m_graphic_context, 0, &gr_values); 

    if(m_showFps)
    {
        displayFps();   
        XCopyArea(ptr_display, m_pixelMap, *ptr_window, gr_context, 0, 0, m_renderSpaceWiddth, m_renderSpaceHeight, 0, 0);
        calculateFps();
    }
    else
    {
        XCopyArea(ptr_display, m_pixelMap, *ptr_window, m_graphic_context, 0, 0, m_renderSpaceWiddth, m_renderSpaceHeight, 0, 0);
    }
}

Что можно сделать для запуска это быстрее?

...