Показать сообщение отдельно
  #6  
Старый 30.03.2009, 12:26
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

А что я могу вам дать? Процедура сохранения та же, что и у вас.
Код:
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 в программе?
Ответить с цитированием