All pastes #283644 Raw Edit

Anonymous

public text v1 · immutable
#283644 ·published 2006-12-18 14:08 UTC
rendered paste body
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, OpenGL,
StdCtrls, Menus, ExtCtrls,GL;

type
TVertex = record
  X, Y, Z: GLFloat;
end;
TMainForm = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormResize(Sender: TObject);



private
RC : HGLRC;
DC : HDC;
procedure glDraw;
procedure Idle(Sender: TObject; var Done: Boolean);
end;




var
MainForm: TMainForm;
vertex : array[1..3] of TVertex;
Indices :array[1..3] of GLInt;
implementation

{$R *.DFM}


procedure SetVertex;
begin
  Vertex[1].x := 15;
  Vertex[1].y := 10;
  Vertex[1].z := 1;

  Vertex[2].x := 20;
  Vertex[2].y := 10;
  Vertex[2].z := 1;

  Vertex[3].x := 16;
  Vertex[3].y := 8;
  Vertex[3].z := 1;
 


end;

procedure TMainForm.glDraw();
begin

glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
gluLookAt(1,5,1,1,1,0,0,0,3);
glVertexPointer(3, GL_FLOAT, 0, @Vertex);
glEnableClientState(GL_VERTEX_ARRAY);
glBegin(GL_TRIANGLES);
glDrawArrays(GL_TRIANGLES,0,3);
gLEnd;
glDisableClientState(GL_VERTEX_ARRAY);
end;


procedure glInit();
begin
SetVertex;
glClearColor(0.0, 0.0, 0.0, 0.0);
glShadeModel(GL_SMOOTH);
glClearDepth(1.0);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
glEnable(gl_texture_2d);
end;

procedure TMainForm.FormCreate(Sender: TObject);
var
pFd : TPIXELFORMATDESCRIPTOR;
pF : Integer;

begin

ShowCursor(true);
DC := GetDC(Handle);
pFd.nSize := SizeOf(pFd);
pFd.nVersion := 1;
pFd.dwFlags := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER or 0;
pFd.iPixelType := PFD_TYPE_RGBA;
pFd.cColorBits := 32;
pF := ChoosePixelFormat(DC, @pFd);


SetPixelFormat(DC, pF, @pFd);
RC := wglCreateContext(DC);
wglMakeCurrent(DC, RC);

Resize;
Application.OnIdle := Idle;
glInit;
end;

procedure TMainForm.FormDestroy(Sender: TObject);
begin

wglMakeCurrent(0,0);
wglDeleteContext(rc);
end;

procedure TMainForm.Idle(Sender: TObject; var Done: Boolean);
begin

glDraw();
SwapBuffers(DC);


end;

procedure TMainForm.FormResize(Sender: TObject);
begin
glViewport(0, 0, 800, Height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0, Width / Height, 0.1, 100.0);
glMatrixMode(GL_MODELVIEW);
end;

end.