看了一阵子书连个圆都不知道怎么画,最好给个DELPHI下面的例子,特谢!!!

解决方案 »

  1.   

    unit MainFrm;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, OpenGL;type
      TfrmMain = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure FormPaint(Sender: TObject);
        procedure FormResize(Sender: TObject);
      private
        { Private declarations }
        hrc:HGLRC;
        w,h:glFloat;
        Sphere:GLUquadricObj;
      public
        { Public declarations }
        procedure MyDraw;
      end;var
      frmMain: TfrmMain;implementation{$R *.dfm}procedure TfrmMain.FormCreate(Sender: TObject);
    var
      pfd:TPixelFormatDescriptor;
      PixelFormat:Integer;
    begin
      ControlStyle:=ControlStyle+[csOpaque];
      FillChar(pfd,sizeof(pfd),0);
      with pfd do
      begin
        nSize:=sizeof(TPixelFormatDescriptor);
        nVersion:=1;
        dwFlags:=PFD_DRAW_TO_WINDOW or
            PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER;
        iPixelType:=PFD_TYPE_RGBA;
        cColorBits:=24;
        cDepthBits:=32;
        iLayerType:=PFD_MAIN_PLANE;
      end;
      PixelFormat:=ChoosePixelFormat(Canvas.Handle,@pfd);
      SetPixelFormat(Canvas.Handle,PixelFormat,@pfd);
      hrc:=wglCreateContext(Canvas.Handle);
      w:=ClientWidth;
      h:=ClientHeight;
    end;procedure TfrmMain.FormDestroy(Sender: TObject);
    begin
      wglDeleteContext(hrc);
    end;procedure TfrmMain.FormPaint(Sender: TObject);
    begin
      wglMakeCurrent(Canvas.Handle,hrc);
      glClearColor(1,1,1,1);
      glColor3f(1,0,0);
      glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
      MyDraw;
      glFlush;
      SwapBuffers(Canvas.Handle);
    end;procedure TfrmMain.MyDraw;
    begin
      glPushMatrix;
      Sphere:=gluNewQuadric;
      gluQuadricDrawStyle(Sphere,GLU_LINE);
      gluSphere(Sphere,0.5,25,25);
      glPopMatrix;
      SwapBuffers(Canvas.handle);
      gluDeleteQuadric(Sphere);
    end;procedure TfrmMain.FormResize(Sender: TObject);
    begin
      glMatrixMode(GL_PROJECTION);
      glLoadIdentity;
      glFrustum(-1.0,1.0,-1.0,1.0,3.0,7.0);
      glViewPort(0,0,ClientWidth,ClientHeight);
      MyDraw;
    end;end.