myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   Delphi - OpenGL will mich ärgern (https://mygully.com/showthread.php?t=2601014)

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;



Alle Zeitangaben in WEZ +1. Es ist jetzt 12:46 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.