А что я могу вам дать? Процедура сохранения та же, что и у вас.
Код:
procedure TForm1.ImageSaver(const ImageFileName: TFileName);
var
FormBitmap: TBitmap;
begin
FormBitmap := TBitmap.Create;
FormBitmap.Width := ClientWidth;
FormBitmap.Height := ClientHeight;
RenderScene(); // вот здесь я перерисоваваю сцену.
Application.ProcessMessages;
FormBitmap.Canvas.CopyRect(Rect(0, 0, ClientWidth, ClientHeight),
Form1.Canvas,
Rect(0, 0, ClientWidth, ClientHeight));
FormBitmap.SaveToFile(ImageFileName);
FormBitmap.Free;
end;
А вот процедура отрисовки (взяла первую попавшуюся свою программку для OpenGL...)
Код:
procedure RenderScene;
begin
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glPushMatrix();
{тут чисто мои заморочки}
glTranslatef(Form1.xTr, Form1.yTr, Form1.zTr);
glRotatef(Form1.xRot, 1.0, 0.0, 0.0); glRotatef(Form1.yRot, 0.0, 1.0, 0.0);
glRotatef(Form1.zRot, 0.0, 0.0, 1.0);
{тут мои заморочки заканчиваются}
glCallList(List1); // это вызывается заранее откомпилированный лист
glPopMatrix();
SwapBuffers(Form1.DC);
end;
Может, у вас как-нибудь не так инициализирован OpenGL в программе?