OpenGL - renderizar directamente a mapa de bits

Estoy creando una aplicación que tiene un montón de ventanas pequeñas y controles (así que es renderizado en 2D), y me gustaría renderizar cada ventana y control a su propio mapa de bits (no hay mucho de ellos). Esto es lo que tenemos:

uses dglOpenGL;
...
var BMP: TBitmap;
    DC, RC: HDC;
...
function TMainForm.Init: Boolean;
begin
  Result := InitOpenGL;
  if Result = True then
  begin
    BMP := TBitmap.Create;
    BMP.PixelFormat := pf24bit;
    BMP.Width := 1280;
    BMP.Height := 1024;

    DC := (BMP.Canvas.Handle);
    RC := CreateRenderingContext(DC,
                                 [opGDI, opDoubleBuffered],//tried changing, didn't help
                                24,
                                24,
                                0,
                                0,
                                0,
                                0);
    ActivateRenderingContext(DC, RC);

    glClearColor(0.27, 0.4, 0.7, 0.0);//Light blue
    glViewport(0, 0, 1280, 1024);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity;
    glOrtho(0, 1280, 0, 1024, -1, 10);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity;
  end;
end;

Procedimiento de renderizado:

  glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  //Red quad
  glColor3f(1, 0, 0);
  glBegin(GL_QUADS);
    glVertex2f(100, 100);
    glVertex2f(1280-100, 100);
    glVertex2f(1280-100, 1024-100);
    glVertex2f(100, 1024-100);
  glend;

  //Output
  SwapBuffers(DC);

Pero no hay salida.
Si yo usoMainForm.Canvas.Draw(0, 0, BMP); entonces aparecerá un rectángulo blanco.

Quiero hacer cosas de representación en mapas de bits porque puedo hacer muchas cosas con mapas de bits (dibujar un gráfico, pintar texto, desenfocar), pero si hay otra forma de hacer un procesamiento fuera de pantalla, entonces está bien ...

Entonces, ¿cómo configuro mi aplicación para el renderizado fuera de pantalla?

Respuestas a la pregunta(1)

Su respuesta a la pregunta