Главная страница
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.48 MB
Время: 0.065 c
5-1089967907
}|{yk
2004-07-16 12:51
2005.07.18
Вопрос по наследуемым фреймам


4-1116665523
Никита
2005-05-21 12:52
2005.07.18
Как получить количество пикселей на дюйм с помощью GetDeviceCap


3-1118158793
Alex Romanskiy
2005-06-07 19:39
2005.07.18
Вставка в две таблицы с помощью IBDataSet.


3-1118139857
-=snoop=-
2005-06-07 14:24
2005.07.18
вопрос по ADO(ADOQuery)


3-1118154518
ryds
2005-06-07 18:28
2005.07.18
Подскажите какой есть аналог SQL-функции REPLACE в IB?