OpenGL

Vorstellungen von Programmen, welche mit Lazarus erstellt wurden.
Antworten
heizkoerper
Beiträge: 24
Registriert: Mo 1. Aug 2011, 14:39
OS, Lazarus, FPC: Windows XP und 7, L 0.9.31, FPC 2.4.4
CPU-Target: 32 und 64 Bit
Wohnort: Hannover
Kontaktdaten:

OpenGL

Beitrag von heizkoerper »

Hallo Forum,

ich habe mein erstes Lazarus-Programm unter Einbindung von OpenGL geschrieben.

Ich habe ein Haus in 3D konstruiert.

Was mich wundert ist, dass mit verschiedenen Drehwinkeln nicht immer alles angezeigt wird.

Was habe ich falsch gemacht?

Gruß heizkoerper
Dateianhänge
Haus3D.zip
(260.76 KiB) 116-mal heruntergeladen

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: OpenGL

Beitrag von MAC »

Es gibt eine Technik die heißt "Backface Culling".
Man kann auf ein Viereck immer von 2 Positionen schauen, von vorne und von hinten. Und um GPU power zu sparen wird nur die version von vorne gerendert, wenn du von hinten auf das viereck schaust (was man eigentlich nie macht da eine Wand eigt immer aus 2 Vierecken besteht) rendert die GPU das viereck einfach nicht.
Beispiel, eine Hauswand besteht aus 2 Vierecken, eins mit der Außenmauer, eins mit der Tapete. Jetzt steht man entweder außerhalb vom Haus, oder im Haus, aber nie zwischen den zwei Teilen einer Wand...
Im grunde geht es darum in welcher Reihenfolge du die 3 Koordinaten für dein Dreieck (oder halt Viereck) eingibst. Achte darauf das die Koordinate gegen den Uhrzeigersind eingegeben werden. Oder wenn du "unsauber" arbeiten willst :) dann schalte das Feature einfach ab, DGL-wiki sollte was dazu sagen...

Code: Alles auswählen

Signatur := nil;

heizkoerper
Beiträge: 24
Registriert: Mo 1. Aug 2011, 14:39
OS, Lazarus, FPC: Windows XP und 7, L 0.9.31, FPC 2.4.4
CPU-Target: 32 und 64 Bit
Wohnort: Hannover
Kontaktdaten:

Re: OpenGL

Beitrag von heizkoerper »

Hallo,

vielen Dank für den Tip.

Jetzt funktioniert alles so, wie ich es mir gewünscht habe.

Gruß heizkoerper

Antworten