Доброго времени суток!
Рисую так:
glClearColor(0.0, 0.0, 0.0, 0.0); glClear( GL_COLOR_BUFFER_BIT); glMatrixMode( GL_MODELVIEW); glLoadIdentity; glScalef( Scale, Scale, 1.0); glTranslatef( PanX, PanY, 0.0); glBindTexture( GL_TEXTURE_2D, texId); glBegin( GL_QUADS); glTexCoord2f( 1.0, 0.0); glVertex2f( 0, 0); glTexCoord2f( 1.0, 1.0); glVertex2f( 50, 0); glTexCoord2f( 0.0, 1.0); glVertex2f( 50, 50); glTexCoord2f( 0.0, 0.0); glVertex2f( 0, 50); glEnd; glBindTexture( GL_TEXTURE_2D, 0); SwapBuffers( DC);
Создаю так:
var Bmp: TBitmap; begin glEnable(GL_TEXTURE_2D); glEnable( GL_COLOR_MATERIAL); //LoadTexture(ExtractFilePath(Application.ExeName) + 'GLScene.bmp'); InitFBO( glPanel.Width, glPanel.Height); glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, fboId); DrawLines; glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, 0); Bmp:= FBOGetBitmap; Bmp.SaveToFile( StringReplace( TimeToStr( Now), ':', '_', [rfReplaceAll]) + '.bmp'); Bmp.Free; Ready:= True; Draw; end;
В сохраненной Bmp есть правильная графика, т.е. текстура создается. А на экране просто квад любым цветом. Если вместо FBO раскомментировать LoadTexture - текструра отображается. Спасибо.
Саму текстуру тоже надо проиницилизировать: glTexture2D, в ней передать все размеры, форматы, и только в конце вместо указателя на буфер с данными поставить nil.
Тема в архиве.