Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.18;
Скачать: CL | DM;

Вниз

Как распечатать картинку созданную в OpenGl   Найти похожие ветки 

 
Sis3   (2005-04-06 20:06) [0]

Как распечатать картинку созданную в OpenGl


 
П7   (2005-04-06 20:21) [1]

На принтере.


 
dRake ©   (2005-04-06 21:14) [2]

Посмотри компонент на torry.net =)


 
Pa5ha   (2005-04-07 01:34) [3]

dRake, а если я VCL отключил? И забудте Вы про компоненты. Кодеры, блин.


 
dRake ©   (2005-04-07 02:25) [4]

Pa5ha - это у нас чорный юмор такой =)
Каков вопрос - таков и ответ


 
Sis3   (2005-04-07 08:16) [5]

Вообще-то я серьезно спрашивал. Когда я использую Form.Paint, то печатаются только компоненты, расположенные на форме(кнопки и т.д.), но не картинка. Наверно нужно сначала перевести ее в BMP, а потом печатать. Но как это сделать?


 
dRake ©   (2005-04-07 11:28) [6]

Ну раз серьезно - залочь FrountBuffer и скопируй пикслели в TBitmap или посмотри аналог D3D функции GetFrontBufferData() (в D3D нельзя лочить фронтбуффер, поэтому приходится сначала скопировать его на другую пов-ть, а потом лочить уже ее...)


 
Pa5ha   (2005-04-07 12:20) [7]

dRake, зато BACK буффер лочить можно. Я после флипа с него картинку и утягивал :D


 
ancara ©   (2005-04-07 12:58) [8]

Какой лочить, вы о чем?
 OpenGL прекрасно рендерит на битмапы, причем эти битмапы не только потом печатать можно , но и превращать в текстуры и обратно в сцену пихать, на объекты натягивать.

При инициализации OpenGL:
var
 pfd: TPixelFormatDescriptor;
 ...
begin
 with pfd do begin
   dwFlags   := PFD_DRAW_TO_BITMAP or
                PFD_SUPPORT_OPENGL;
   cColorBits     := 24;
  ...
 end;

 nPixelFormat := ChoosePixelFormat(BmpDC, @pfd);
 SetPixelFormat(BmpDC, nPixelFormat, @pfd);
end;


где BmpDC - BmpDC:=Bitmap.Canvas.Handle;
тока надо следить чтобы PixelFormat совпадал с pfd.cColorBits ну и за размерами само сабой....


 
XProger ©   (2005-04-07 20:49) [9]

Зачем в битмэп?
Берём все пиксели изображения glReadPixels.

uses
Printers;
...
var
Printer : TPrinter;
r : TRect;
i : Integer;
begin
with Printer do
begin
r := Rect(0, 0, W, H);
BeginDoc;
StretchDIBits(Canvas.Handle, 0, 0, W, H,
                             0, 0, W, H,
                             pix, BitInfo,
                             DIB_RGB_COLORS, SRCCOPY);  
Canvas.FrameRect(r);
EndDoc;
end;
end;

Ну вот собсна всё... ;)



Страницы: 1 вся ветка

Текущий архив: 2005.07.18;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.042 c
14-1119470222
NewWonder
2005-06-22 23:57
2005.07.18
Сколько стоит написать курсовик?


14-1118916224
Yanis
2005-06-16 14:03
2005.07.18
Как придумать программу?


1-1120159595
GanibalLector
2005-06-30 23:26
2005.07.18
CustomSort в TStringList


1-1119785382
Sower
2005-06-26 15:29
2005.07.18
Чтение из конца в начало.


10-1096905096
Avruk
2004-10-04 19:51
2005.07.18
После закрытия программа остается в списке процессов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский