首页 > 解决方案 > Xlib 快速有效地绘制像素

问题描述

我想使用 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);
    }
}

我该怎么做才能更快地运行它?

标签: c++drawingrenderingpixelxlib

解决方案


推荐阅读