Здравствуйте.
  Не подскажете где я мог чего упустить.
  Я шейдером рисую во фреймбуфер четыре точки разного цвета. (Потом это будут координаты вершин).
  Потом я считываю в TmpBuf то, что получилось (числа как то более понятно чем цвета) и следом рисую квадратик используя фрейбуфер как текстуру.
 
  В OpenGL 2.1 В режиме GL_TEXTURE_2D я вижу квадртик состоящий из 4 разноцветных квадратиков (как и ожидалось).
  В OpenGL 3.2 В режиме GL_TEXTURE_2D я вижу квадртик с плавными переходами цветов, цвета переходят как повертикали так и по горизонтали.
  В OpenGL 3.2 В режиме GL_TEXTURE_RECTANGLE я вижу квадртик одного цвета.
  Во всех случаях в TmpBuf числа похожие на правду и они меняются в зависимости от входных данных, но квадратик в GL_TEXTURE_RECTANGLE всегда однотонный (темно-желтый).
 
 
  GlslProgram.bind;
  GlslProgram.setTexture ( 'TextureVertex',  0 );
  FrameBuffer.bind;
  startOrtho(2, 2);
  drawQuadsRect(2, 2);
  endOrtho;
  GlslProgram.unbind;
  SetLength(TmpBuf, FrameBuffer.getWidth * FrameBuffer.getHeight * 4 );
  glReadPixels ( 0, 0, FB.getWidth, FB.getHeight , GL_RGBA, GL_FLOAT, TmpBuf );
  DrawQuads(...);