Ïîìîùü - Ïîèñê - Ïîëüçîâàòåëè - Êàëåíäàðü
Ïîëíàÿ âåðñèÿ: Îpengl Why?
Ôîðóì «Âñ¸ î Ïàñêàëå» > Delphi, Assembler è äðóãèå ÿçûêè. > Delphi
XaMMaX
Ïî÷åìó å÷ñëè êîìïèëèðîâàòü ýòîò êîä íà ôîðìå íå ÷åãî íå ïîÿâëÿåòñÿ èñïðàâüòå êòî ìîæåò ïëèç.

unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   Timer1: TTimer;
   procedure FormCreate(Sender: TObject);
   procedure FormResize(Sender: TObject);
   procedure FormClose(Sender: TObject; var Action: TCloseAction);

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

var
 Form1: TForm1;

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;
  ppfd.cColorBits := 16;
  ppfd.cDepthBits := 16;

  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
              ghDC := GetDC(Handle);
              if bSetupPixelFormat(ghDC)=false then
                Close();
              ghRC := wglCreateContext(ghDC);
              wglMakeCurrent(ghDC, ghRC);
           
              glClearColor(0.0, 0.0, 0.0, 0.0);

              FormResize(Sender);
           
              glEnable(GL_COLOR_MATERIAL);
              glEnable(GL_DEPTH_TEST);
           
              glEnable(GL_LIGHTING);
              glEnable(GL_LIGHT0);
                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);
              glLightfv(GL_LIGHT0,GL_SPOT_DIRECTION,@d);
           end;

procedure TForm1.FormResize(Sender: TObject);
begin
              glViewport( 0, 0, Width, Height );
              glMatrixMode( GL_PROJECTION );
              glLoadIdentity();
              glOrtho(-5,5, -5,5, 2,12);
              gluLookAt(0,0,5, 0,0,0, 0,1,0);
              glMatrixMode( GL_MODELVIEW );
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.Draw;
           var
             quadObj :GLUquadricObj;
           begin
             glClear(GL_DEPTH_BUFFER_BIT xor GL_COLOR_BUFFER_BIT);
           
             quadObj:=gluNewQuadric;
             gluQuadricDrawStyle(quadObj, GLU_FILL);
             glColor3f(1,0,0);
             gluSphere(quadObj, 2,10,10);
               glRotatef(3, 0,1,0);
             gluDeleteQuadric(quadObj);
           
             SwapBuffers(ghDC);
           end;

end.
AlienEmperor
Íó, äëÿ íà÷àëà: âîîáùå OR - ëîãè÷åñêîå "È", à "XOR" ëîãè÷åñêîå "È" ñ îòðèöàíèåì...

ppfd.dwFlags :=  PFD_DRAW_TO_WINDOW xor
               PFD_SUPPORT_OPENGL xor PFD_DOUBLEBUFFER;

íàäî ïèñàòü ñ OR èëè ñ "+"

ïî-ìîåìó, â öèêëå Draw íå ñòîèò ñîçäàâàòü è óäàëÿòü Quadrick îáúåêò êàæäûé ðàç...
#$# PaVeL #$#
Ïîïðîáóé Handle çàìåíèòü íà Form1.Handle
#$# PaVeL #$# dirol.gif
Ýòî òåêñòîâàÿ âåðñèÿ — òîëüêî îñíîâíîé êîíòåíò. Äëÿ ïðîñìîòðà ïîëíîé âåðñèè ýòîé ñòðàíèöû, ïîæàëóéñòà, íàæìèòå ñþäà.