Animation erstellen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Johannes
Beiträge: 174
Registriert: Sa 9. Jan 2016, 09:30

Re: Animation erstellen

Beitrag von Johannes »

Hallo Forum,

mein Programm ist weiter gediehen.

Ich nutze ein PageControl mit mehreren TabSheets auf meinem Form. Die bestehende Animation läuft prima auf dem ersten TabSheet.
Auf einem weiteren soll nun eine zweite, kleine, Animation angezeigt werden.
Wie initialisiere ich das OpenGLControl2 richtig?
Für die bestehende Animation sieht das so aus:

Code: Alles auswählen

{ TSteuerung_Start }
// Initialisierung
procedure TSteuerung_Start.FormCreate(Sender: TObject);
begin
  InitOpenGL;
  OpenGLControl1.MakeCurrent;
  ReadExtensions;
  ReadImplementationProperties;
  glEnable(GL_BLEND);
  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  glEnable(GL_DEPTH_TEST);
  glDepthFunc(GL_LESS);
  glGenTextures(1, @textureID0);
  glBindTexture(GL_TEXTURE_2D, textureID0);
  bit := CreateBitmap;
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
  glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, bit.Width, bit.Height,
    0, GL_BGR, GL_UNSIGNED_BYTE, bit.RawImage.Data);
  bit.Free; // Temporäre Bitmap wieder frei geben.
  glGenerateMipmap(GL_TEXTURE_2D);
  quadricParam := @gluNewQuadric;                                 

Danke und Gruß

Hannes

Mathias
Beiträge: 6910
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Animation erstellen

Beitrag von Mathias »

Hier habe ich ein Demo mit 3 OpenGLControl.

Einen Reibungsloser Lauf kann ich aber nicht garantieren.

Code: Alles auswählen

OpenGLControl2.SwapBuffers; 
Diese Zeilen sind der springende Punkt.

Das

Code: Alles auswählen

OpenGLControl1.MakeCurrent;
musst du genauer angucken.
In meinem Demo ist diese nicht vorhanden.

Ich hoffe dies hilft dir weiter,
Dateianhänge
Triangle - mehrere Context.zip
(125.68 KiB) 82-mal heruntergeladen
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Mathias
Beiträge: 6910
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Animation erstellen

Beitrag von Mathias »

Das wäre auch noch eine Möglichkeit für dein Problem.
Dateianhänge
Triangle - mehrere Context auf Panel.zip
(125.99 KiB) 90-mal heruntergeladen
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Johannes
Beiträge: 174
Registriert: Sa 9. Jan 2016, 09:30

Re: Animation erstellen

Beitrag von Johannes »

Vielen Dank für die schnelle Hilfe!

Deine Beispiele lassen sich bei mir leider nicht kompilieren. Es fehlt "dglOpenGL".

Ich habe mir den Code angeschaut. Wenn ich "MakeCurrent" auskommentiere gibt es SIGSEGV...
Die anderen Änderungen wie SwapBuffers habe ich natürlich angepasst.

Gruß

Hannes

Johannes
Beiträge: 174
Registriert: Sa 9. Jan 2016, 09:30

Re: Animation erstellen

Beitrag von Johannes »

Hab mich jetzt einige Zeit damit beschäftigt.
Deine Beispiele laufen natürlich wenn man die DGLOpenGL.pas zum Projekt hinzufügt.

Bei mir klappt das leider nicht. Sobald ich das "MakeCurrent" im FormCreate weglasse kommt, beim Programmstart, mein geschilderter Fehler: External:SIGSEGV.
Ich weiß nun nicht mehr wo ich noch suchen sollte.
Im FormCreate stehen, bei mir, noch einige Befehle welche ich für die Textur brauche. Kann das vielleicht damit zu tun haben?

Gute Nacht

Hannes

Antworten