burnedhead |
03.04.12 14:39 |
Delphi - OpenGL will mich ärgern
Also, ich wollte mal mit OpenGL etwas anfangen und komm schon am Anfang nicht weiter, denn ich scheitere schon bei der Initialisierung. :dozey:
Folgendes Tutorial habe ich mir angeschaut und den entsprechenden Header benutzt:
[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]
Nur sehe ich nichts als Fensterfarbe (sollte mal schwarz werden)
Code:
procedure TForm1.FormCreate(Sender: TObject);
begin
DC := GetDC(Handle);
RC:=CreateRenderingContext(DC, //Device Contest
[opDoubleBuffered], //Optionen
32, //ColorBits
24, //ZBits
0, //StencilBits
0, //AccumBits
0, //AuxBuffers
0); //Layer
ActivateRenderingContext(DC, RC);
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
gluPerspective(60, ClientWidth/ClientHeight, 1, 128);
glMatrixMode(GL_MODELVIEW);
end;
glTranslatef(0, 0,-6); //Bewegt "Zeichenstift" -> Hier: Nach hinten (Z)
glTranslatef(-1.5,0,0); //Hier: -Y
SwapBuffers(DC);
procedure TForm1.FormResize(Sender: TObject);
begin
glViewport(0, 0, ClientWidth, ClientHeight); //Definiert die Zeichenoberfläche in einem Kooridnatensystem -> Hier: nach Fenster
end;
PS: Hat sich erledigt. Durch Probiererei und einem Faceplam der mir selbst galt funktioniert es jetzt...
Code:
procedure TForm1.FormCreate(Sender: TObject);
begin
DC := GetDC(Handle);
RC:=CreateRenderingContext(DC, //Device Contest
[opDoubleBuffered], //Optionen
32, //ColorBits
24, //ZBits
0, //StencilBits
0, //AccumBits
0, //AuxBuffers
0); //Layer
ActivateRenderingContext(DC, RC);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);
glClearColor(0,0,0,0); //Hintegrund R,G,B
Application.OnIdle := ApplicationEventsIdle;
end;
procedure TForm1.ApplicationEventsIdle(Sender: TObject; var Done: Boolean);
begin
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
glViewPort(0, 0, ClientWidth, ClientHeight);
gluPerspective(60, ClientWidth/ClientHeight, 1, 128);
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
SwapBuffers(Canvas.Handle);
Done := False;
end;
procedure TForm1.FormResize(Sender: TObject);
begin
glViewport(0, 0, ClientWidth, ClientHeight); //Definiert die Zeichenoberfläche in einem Kooridnatensystem -> Hier: nach Fenster
end;
|