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

Вниз

Opengl - прозрачный фон и вывод текста и другое   Найти похожие ветки 

 
Shader ©   (2005-09-26 19:40) [0]

Просьба помочь в работе с openGL:

1) Необходимо задать прозрачный фон
2) не пойму как задать координаты для объекта (сфера, например)
3) Нужно вывести текст при помощи openGL
4) Работа с OPenGL но не на форме, например на Image
5) Не пойму как поставить два источника света


 
Shader ©   (2005-09-26 19:48) [1]

Забыл, вот что в исходнике:

unit Unit1;
interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ExtCtrls, StdCtrls, jpeg,
 ///////
   opengl;
 ///////

type
 TForm1 = class(TForm)
   Button1: TButton;
   Button2: TButton;
   Image1: TImage;
   procedure FormCreate(Sender: TObject);
   procedure FormClose(Sender: TObject; var Action: TCloseAction);
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);

 private
   { Private declarations }
   //////////////////
     ghRC:HGLRC;
     ghDC:HDC;
     procedure Draw;
   //////////////////
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 x:boolean;
 Y:integer;
implementation

{$R *.dfm}
////////////////////////////////////////////////////////////////////
 function bSetupPixelFormat(DC:HDC):boolean;
     var
         pfd:PIXELFORMATDESCRIPTOR;
         ppfd:PPIXELFORMATDESCRIPTOR;
         pixelformat:integer;
     begin
         ppfd := @pfd;
         ppfd.nSize := sizeof(PIXELFORMATDESCRIPTOR);
         ppfd.nVersion := 1;
         ppfd.dwFlags :=  PFD_DRAW_TO_WINDOW xor
                          PFD_SUPPORT_OPENGL xor
                          PFD_DOUBLEBUFFER;
         ppfd.dwLayerMask := PFD_MAIN_PLANE;
         ppfd.iPixelType := PFD_TYPE_RGBA;
                                     {формат указания цвета
                                         PFD_TYPE_RGBA
                                          (цвет указывается четырьмя параметрами)
                                            PFD_TYPE_COLORINDEX
                                             (цвет указывается индексом в палитре)}
         ppfd.cColorBits := 16;  {глубина цвета}
         ppfd.cDepthBits := 16;  {глубина Z-буффера}
         ppfd.cAccumBits := 0;   {}
         ppfd.cStencilBits := 0; {размера буффера трафарета}
         pixelformat := ChoosePixelFormat(dc, ppfd);
                                           {Выбор подходящего типа пикселя}
         if pixelformat=0 then
         begin
             MessageBox(0, "ChoosePixelFormat failed", "Error", MB_OK);
             bSetupPixelFormat:=FALSE;
             exit;
         end;
         if SetPixelFormat(dc, pixelformat, ppfd)=false then
         begin
             MessageBox(0, "SetPixelFormat failed", "Error", MB_OK);
             bSetupPixelFormat:=FALSE;
             exit;
         end;
         bSetupPixelFormat:=TRUE;
     end;

////////////////////////////////////////////////////////////////////
procedure TForm1.FormCreate(Sender: TObject);
     var
        p: TGLArrayf4;
        d: TGLArrayf3;
begin
     X:=false;
        //////////////////////////////////////
          ghDC := GetDC(Handle);
          bSetupPixelFormat(ghDC);
          ghRC := wglCreateContext(ghDC);      
                    {указатель на контекст воспроизведения (Rendering Context)}
          wglMakeCurrent(ghDC, ghRC);          
                {  дескриптор устройства (для нас – просто указатель на окно)}
        ///////////////////////////////////////
        glClearColor(0.0, 0.0, 0.0, 9.0);      {Цвет очистки или заднего фона}
          glViewport( 0, 0, Width, Height );
          glMatrixMode( GL_PROJECTION );       {выбор положения камеры начат}
          glLoadIdentity();                    {сброс}
          glOrtho(-5,5, -5,5, 2,12);           {масштаб коордитнатных осей}
          gluLookAt(2,2,5,                     {координаты камеры}
                    0,0,0,                     {координаты направления камеры}
                    0,1,0);                    {координаты направления оси Y}
          glMatrixMode( GL_MODELVIEW );      
                                                  {выбор положения камеры окончен}
        glEnable(GL_COLOR_MATERIAL);           {цвет объекта}
        glEnable(GL_DEPTH_TEST);               {объёмность}
    glEnable(GL_LIGHTING);                     {освещённость}
      glEnable(GL_LIGHT0);                     {активна лампочка №0}
          p[0]:=3;
          p[1]:=3;
          p[2]:=3;
          p[3]:=1;
          d[0]:=-1;
          d[1]:=-1;
          d[2]:=-3;
        glLightfv(GL_LIGHT0,GL_POSITION,@p);      
             {расположение лампочки #0}
        glLightfv(GL_LIGHT0,GL_SPOT_DIRECTION,@d);
             {направление света лампочки #0}

end;

procedure Tform1.Draw;    {то, что рисуем}
     var
       quadObj :GLUquadricObj;
begin
       glClear(GL_DEPTH_BUFFER_BIT xor GL_COLOR_BUFFER_BIT);   {очистка буфера}
       quadObj:=gluNewQuadric;                                 {создание объекта}
       gluQuadricDrawStyle(quadObj, GLU_FILL);
                                   {GLU_FILL, GLU_LINE, GLU_POINT}
       glColor3f(0,1,0);                              {цвет фигуры}
       glEnable(GL_POINT_SMOOTH);                     {сглаживание}
       gluSphere(quadObj, 1,1000,1000);
///////////
{как задать координаты ??? для этой сферы}
///////////
       gluDeleteQuadric(quadObj);                {освобождение памяти}
       gluDeleteQuadric(Figure);                  
       SwapBuffers(ghDC);                        {вывод содержимого буфера}
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   ///////////////////////////////////
     if ghRC<>0 then
       begin
         wglMakeCurrent(ghDC,0);
         wglDeleteContext(ghRC);
       end;
       if ghDC<>0 then
         ReleaseDC(Handle, ghDC);
   ///////////////////////////////////
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 draw;
end;

end.



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

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

Наверх




Память: 0.48 MB
Время: 0.041 c
9-1118119264
!Trinix
2005-06-07 08:41
2005.10.23
Оптимизация glscene


11-1093230894
DmiSb
2004-08-23 07:14
2005.10.23
Excel.Application.Quit ?


14-1128053960
MBo
2005-09-30 08:19
2005.10.23
Пятничные задачки. Не дай мозгам засохнуть


2-1127549052
oSa
2005-09-24 12:04
2005.10.23
Ошибка при создании конструктора


4-1124692715
Malignus
2005-08-22 10:38
2005.10.23
Определение активного юзера из сервиса





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский