- implementation
- var
- DC, RC:HDC;
- w:real;
- bmp:Tbitmap; //Dieses Nette Bildchen würde ich gerne als Textur nutzen
- const
- NearClipping = 1;
- FarClipping = 1000;
- procedure TForm1.FormResize(Sender: TObject);
- var tmpBool : Boolean;
- begin
- glViewport(0, 0, ClientWidth, ClientHeight);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity;
- gluPerspective(45.0, ClientWidth/ClientHeight, NearClipping , FarClipping);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity;
- IdleHandler(Sender, tmpBool);
- end;
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- Application.OnIdle := IdleHandler;
- DC:=GetDC(Handle);
- initopengl; //OPEN GL initialisieren
- RC:=CreateRenderingContext(DC, //Device Contest
- [opDoubleBuffered], //Optionen
- 32, //ColorBits
- 24, //ZBits
- 0, //StencilBits
- 0, //AccumBits
- 0, //AuxBuffers
- 0); //Layer
- ActivateRenderingContext(DC, RC);
- SetupGL;
- glEnable(GL_TEXTURE_2D);
- bmp:=Tbitmap.Create;
- bmp.LoadFromFile('Figur1.bmp');
- end;
- procedure TForm1.FormDestroy(Sender: TObject);
- begin
- DeactivateRenderingContext; //alles aus dem SPeicher hauen
- DestroyRenderingContext(RC);
- ReleaseDC(Handle, DC);
- freeAndNil(bmp);
- end;
- procedure TForm1.SetupGL;
- begin
- glClearColor(0{rot}, 0{Gelb}, 0{Grün}, 1.0{alpha}); //Hintergrundfarbe
- glEnable(GL_DEPTH_TEST); //Tiefentest aktivieren
- end;
- procedure TForm1.Render;
- begin
- glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); //Bild leeren
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity;
- gluPerspective(45.0, ClientWidth/ClientHeight, NearClipping, FarClipping);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity;
- //glmatrixmode(GL_Texture);
- //glLoadIdentity;
- glrotatef(w,0,0,-5);
- glTranslatef(0, 0, -5);
- //glScalef(1,1,1);
- glTexImage2D(GL_TEXTURE_2D,0,3,
- 32, 60,
- 0,GL_RGB,GL_UNSIGNED_BYTE, bmp); // ????
- glEnable(GL_TEXTURE_2D); // ????
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); //???
- glPushMatrix();
- gltranslatef(-2,0,0);
- glBegin(GL_QUADS);
- glTexCoord2f(0,0);glVertex2d(0, 0);
- glTexCoord2f(1,0);glVertex2d(1, 0);
- glTexCoord2f(1,1);glVertex2d(1, 1);
- glTexCoord2f(0,1);glVertex2d(0, 1);
- glEnd;
- glpopmatrix();
- SwapBuffers(DC);
- end;
- procedure TForm1.IdleHandler(Sender: TObject; var Done: Boolean);
- begin
- StartTime:= GetTickCount; //Zeitmessung starten
- Render; //Bild malen
- DrawTime:= GetTickCount - StartTime; //Zeit berechnen
- Inc(TimeCount, DrawTime);
- Inc(FrameCount);
- if TimeCount >= 1000 then begin
- Frames:= FrameCount;
- TimeCount:= TimeCount - 1000;
- FrameCount:= 0;
- form1.Caption:= InttoStr(Frames);
- end;
- Done:= false;
- end;
- end.