Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2016, 12:15   #1
basil
Пользователь
 
Регистрация: 21.06.2007
Сообщений: 14
По умолчанию Как картинку отриcованую средствами OpenGl записать в GIF файл в Delphi XE4

В Winows 7 Delphi XE4: Как картинку отриcованную средствами OpenGl записать в GIF файл.
Картинку с CANVAS отрисованную стандартными функциями записывает в гифку и в Winows XP Delphi7 и в Winows 7 Delphi XE4.
Картинку отриcованную средствами OpenGl записывает в гифку в Winows XP Delphi7.
Картинку отриcованную средствами OpenGl не записывает в гифку в Winows 7 Delphi XE4.
В XE4 выводит пустой белый лист в гифку.
Читал что связано с рендерингом, может кто-то знает?
Нашёл два варианта рендеринга RenderToBitmap, один проверил - выводит чёрный лист.
Второй вариант требует утилиты GL, GLu, GLext - проверить не смог, т к. не смог их найти в инете.
Может кто-то сталкивался с проблемой.
В скрепке два варианте FrameBufferunit.


Код:
FrameBuffer := TFrameBuffer.Create(ABitmap, Err);
   If Err = 0 then begin
{....... Инициализация матриц проектирования и моделирования .........}
//   SetMatrixes(ABitmap.Width, ABitmap.Height);

			p:=tprogr.create(PanelErr{Trans},PanelEdit,DrawTrans,progress,false);
      p.is3D:=false;//is3D;
			p.name:='ProgrTransl';
			p.isDrawBorderProgr:=true;
			p.isDrawEkvid:=false;//true;
      DrawTrans.fprogr:=p;
      p.open(DialogLoadSave.FileName);
      p.width_ekvid:=0;//Form_Const_Tools_New_DC_Width_sharp.Value/10;
      p.isCirclePrir:=progr.isCirclePrir;
      p.RaznRadius:=progr.RaznRadius;
      p.isSkipCadr:=progr.isSkipCadr;
      p.EkvidPodxod:= progr.EkvidPodxod;
      if (isShowProgr) then
        ShowIconOrProgr(false);
      if p.tip=typeESSI then
        sExt:=ext_esi
      else
        if p.tip=typeISO then
          sExt:=ext_iso;
     sExt:=sExt+ext_pic;

			if p.compile(true) then
      begin
        Panel_Flash_Stop.SetError(Mes_NotError_LNG,cf_Message);

        DrawTrans.DrawToScreen(stDrawToScreenProgr);
        DrawTrans.repaint;

        S:=ChangeFileExt(p.fullname,sExt);
        FileSetAttr(S,faArchive);
      end;

          ABitmap.Canvas.CopyRect(Rect(0,0,ABitmap.width,ABitmap.Height),DrawTrans.Canvas,Rect(0,0,ABitmap.width,ABitmap.Height));

//   MyPaint(True);  { Рисуем на контексте функциями OpenGL }
   FrameBuffer.TextureToBitmap;

         gif:=TGIFImage.Create;
          gif.Assign(ABitmap);

          if SSS<>sExt then
           gif.SaveToFile(ChangeFileExt(p.fullname,sss))
          else
          gif.SaveToFile(ChangeFileExt(p.fullname,sExt));
          ABitmap.Free;
          gif.Free;

   end;
{....... Освобождение памяти и уничтожение временного контекста ......}
FrameBuffer.Free;        GhostForm.Free;
wglMakeCurrent(0, 0);   // wglDeleteContext(FGLContext);
FGLContext := 0;    { Признак - см. proc.MyPaint }
ABitmap.Canvas.UnLock;


end;
http://basil-cat.narod.ru/main.txt

_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 15.04.2016 в 13:34.
basil вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Графика в Delphi средствами OpenGL?? Нужна объяснить функции artiom4356 Общие вопросы Delphi 2 01.08.2014 10:23
Как вывести картинку GIF Bubel Visual C++ 0 25.10.2011 18:32
Быстро записать картинку в файл. jetyb C# (си шарп) 3 11.04.2011 11:51
Как загрузить в делфи 7 картинку с расширением GIF? вероника-kz Мультимедиа в Delphi 1 13.10.2009 13:46
Как сохранить данные в xml файл средствами delphi ??? juden Общие вопросы Delphi 1 12.08.2008 10:12