У меня такое наблюдение. Может кто знает почему так?
В коде приведенном ниже для правильного отображения цветов необходимо добавить строку кода "glColor3f(1.0, 1.0, 1.0);" (помечена как перемещаемая) от помеченного места и до помеченного места. Если такого кода нет, тогда при рисовании будет использован только цвет который был установлен последним, причем он работает как маска для всех применений цвета выше по коду для текущего фреймбуфера.
Я долго вычислял закономерность и нашел ее, но не пойму почему так.
FB := TFrameBuffer.Create(ClientWidth, ClientHeight, depth32);
FB.bind;
glClearColor(0.3, 0.3, 0.3, 0.0);
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glDisable( GL_TEXTURE_2D );
glBegin ( GL_QUADS );
glColor3f(1.0, 0.0, 0.0);
glVertex2f ( 0, 0 );
glColor3f(0.0, 1.0, 0.0);
glVertex2f ( 10, 0 );
glColor3f(0.0, 0.0, 1.0);
glVertex2f ( 10, 5 );
glColor3f(0.0, 0.0, 0.0);
glVertex2f ( 0, 5 );
glEnd; // <<<<<<< от сюда
FB.unbind;
glEnable( GL_TEXTURE_2D );
glBindTexture(GL_TEXTURE_2D, FB.GetColorBuffer(0));
glColor3f(1.0, 1.0, 1.0); // перемещаемая строка
// <<<<<< до сюда
glBegin ( GL_QUADS );
glTexCoord2f ( 0, 0 );
glVertex2f ( 0, 0 );
glTexCoord2f ( 1, 0 );
glVertex2f ( 5, 0 );
glTexCoord2f ( 1, 1 );
glVertex2f ( 5, 10 );
glTexCoord2f ( 0, 1 );
glVertex2f ( 0, 10 );
glEnd;
Если установить белый цвет, то видно два прямоугольника один цветной в другом сером, а серый в окне.
А если не установить белый цвет, тогда цвета картинки будут зависеть от последнего цвета использованного при рисовании во фреймбуфер.
И если последняя вершина будет черного цвета, тогда не видно ничего. Вернее все черного цвета.