c++ - 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);
}
}
我该怎么做才能更快地运行它?