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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.11.2011, 23:21
Prok186 Prok186 вне форума
Прохожий
 
Регистрация: 19.06.2011
Сообщения: 22
Репутация: 10
Злость Delphi XE2 64bit: проблемы с OpenGL-рендерингом на Bitmap

Давно и довольно успешно (начиная с Delphi7) работал фрагмент кода для вывода OpenGL графики на BitMap (этот фрагмент вызывается в ходе выполнения программы многократно, в цикле: из Bitmap-ов строится AVI-файл-мультик):
Код:
procedure TFormOpenGL.RenderToBitmap(const ABitmap: TBitmap);
var FormatIndex: Integer;    PFD: TPixelFormatDescriptor;  lFDC: HDC;
begin
lFDC := ABitmap.Canvas.Handle;
FillChar(PFD, SizeOf(PFD), 0);
  With PFD do begin
  nSize := SizeOf(PFD);   nVersion := 1;
  dwFlags := pfd_Draw_to_Bitmap or pfd_Support_OpenGL;
  iPixelType := pfd_Type_RGBA;
  cColorBits := 24;    cDepthBits := 32;
  iLayerType := pfd_Main_Plane;
  end;
FormatIndex := ChoosePixelFormat(lFDC, @PFD);
SetPixelFormat(lFDC, FormatIndex, @PFD);
FGLContext := wglCreateContext(lFDC);
wglMakeCurrent(lFDC, FGLContext);
MyPaint(True);
.............
end;
Недавно перешёл на Delphi XE2. При компиляции 32bit - по-прежнему всё ОК. А вот при создании приложения 64bit -при выводе на Bitmap иногда (!!), причём ни сразу вылезают ошибки с сообщением "External exception 80000003" . После такой ошибки при закрытии приложения [x] часть его остаётся где-то в памяти и продолжает жрать ресурсы: добивается только через TaskMngr. Вопросы:
1) Это моя ошибка, или ошибка нового компилятора? Повторюсь. Крах программы происходит случайным образом, на разных компах по-разному.
Сразу скажу: никаких присвоений целым переменным значений указателей я не использую никогда (это могло давать ошибки на 64битном компиляторе).
2) Нет ли примера вывода на Bitmap другими функциями OpenGL, скажем - рисования не текстуре и далее- сохранения текстуры как Bitmap, или чем то ещё более правильным и не таким глючным, как прямой вывод на невидимый Bitmap?
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter