To improve performance when drawing pixel rectangles, follow these guidelines:
Similar to polygon drawing, there can be a pixel-drawing bottleneck due to overload in host bandwidth, processing, or rasterizing. When all modes are off, the path is most likely limited by host bandwidth, and a wise choice of host pixel format and type pays off tremendously. For this reason, using type GL_UNSIGNED_BYTE, for the image components is sometimes faster.
Zooming up pixels may create a raster bottleneck.