Я думаю, что вы не можете получить хорошие результаты таким образом, в приведенном примере есть следующий код
void draw(HDC pdcDest)
{
assert(pdcDIB);
verify(BitBlt(pdcDest, 0, 0, w, h, pdcDIB, 0, 0, SRCCOPY));
}
BitBlt - это функция, выполняемая на процессоре, тогда как функции OpenGL выполняются графическим процессором. Таким образом, отображаемые данные из графического процессора для сканирования обратно в основную память, и, по сути, пропускная способность между графическим процессором и центральным процессором несколько ограничена (даже в большей степени, потому что данные возвращаются туда, как только BitBlt'ed).
Если вам действительно нужно прозрачное окно с отображаемым содержимым, вы можете взглянуть на Direct2D и / или Direct3D, возможно, есть какой-то способ сделать это без потери производительности при перемещении данных.