Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.03.2009, 14:13
deathor deathor вне форума
Прохожий
 
Регистрация: 25.11.2008
Сообщения: 34
Репутация: 10
По умолчанию Снятие скриншота с OpenGL приложения.

Подскажите пожалуйста, как можно снять скриншот с такого рода приложений? Используй станартные процедуры получаю "квадрат малевича"... Скриншоты нужно снимать с hl.exe
Ответить с цитированием
  #2  
Старый 28.03.2009, 12:49
deathor deathor вне форума
Прохожий
 
Регистрация: 25.11.2008
Сообщения: 34
Репутация: 10
По умолчанию

Up.
Ну хоть кто-нибудь подскажите!!!
Ответить с цитированием
  #3  
Старый 29.03.2009, 22:10
deathor deathor вне форума
Прохожий
 
Регистрация: 25.11.2008
Сообщения: 34
Репутация: 10
По умолчанию

gr - объект, в канве которого я рисую с помощью OpenGL
bt := TBitmap.Create;
with bt do
begin
Width := gr.Width;
Height := gr.Height;
Canvas.CopyRect(ClientRect, gr.Canvas, gr.ClientRect);
SaveToFile('e:\bt.bmp');
Free;
end;

Можно ли еним снять картинки из игр? Если да, то что сдесь неверно?
Ответить с цитированием
  #4  
Старый 30.03.2009, 00:16
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

deathor, а у меня этот ваш вариант работает без проблем. Только если я сохраняю картинку с помощью диалога, то на картинке оказываются отсеченными те части, которые заслонялись диалоговым окном. Если дело в этом, то попробуйте перед вызовом метода CopyRect насильно еще раз отрисовать всю сцену (и, возможно, придется вызвать после отрисовки Application.ProcessMessages). Тогда исчезают отсеченные куски картинки)).

Последний раз редактировалось Nyctos Kasignete, 30.03.2009 в 00:34.
Ответить с цитированием
  #5  
Старый 30.03.2009, 02:19
deathor deathor вне форума
Прохожий
 
Регистрация: 25.11.2008
Сообщения: 34
Репутация: 10
По умолчанию

В таком случае дай кусок программы, где ты его использовал... может что-нить не то творю..
Ответить с цитированием
  #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 в программе?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:56.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter