Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: So Jul 06, 2025 05:44

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Wo ruft man InitOpenGL auf?
BeitragVerfasst: Fr Dez 17, 2010 13:48 
Offline
DGL Member

Registriert: Di Aug 31, 2010 10:29
Beiträge: 12
Wohnort: Norwegen
Programmiersprache: Pascal
Ich kann es nich verstehen warum InitOpenGL nicht in der Abschnitt "initialization"
aufgeruft wird.

Folgendermassen wird es bei mir getan und wenigstens wirkt der Beispiel QuickStart
problemfrei.

Warum soll man es im Programm aufrufen?

So steht es in dglOpenGL.pas jetzt:

initialization
{$IFDEF CPU386}
Set8087CW($133F);
if InitOpenGL then ;
{$ENDIF}


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wo ruft man InitOpenGL auf?
BeitragVerfasst: Fr Dez 17, 2010 14:22 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 11, 2009 08:02
Beiträge: 532
Programmiersprache: pascal (Delphi 7)
gustaf hat geschrieben:
Ich kann es nich verstehen warum InitOpenGL nicht in der Abschnitt "initialization"
aufgeruft wird.
Wie du bereits herausgefunden hast, ist es nicht "falsch" InitOpenGL im Abschnitt initialization aufzurufen. Es ist allerdings auch nicht falsch, es zB im OnCreate zu machen. Wichtig ist halt nur, dass InitOpenGL aufgerufen wird, bevor gezeichnet wird. Wann genau ist soweit ich weiß egal.

Soweit ich weiß, sorgt InitOpenGL dafür, dass die OpenGL - Funktionen zur Verfügung stehen dh sie werden aus der dll geladen. Dann werden noch ein paar sinnvolle Zustände gesetzt (zB Tiefentest aktiviert). Das muss natürlich passieren bevor gezeichnet wird, aber wann genau ist eher egal.

Code:
if InitOpenGL then ;
Das if then da drumherum macht so übrigens genau nix. Einfach nur InitOpenGL; würds normalerweise auch tun ;) In Beiden fälen wirds ausgeführt, und der Rückgabewert wird ignoriert. Wobei das natürlich auch Geschmackssache ist, wie mans hinschreibt 8)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wo ruft man InitOpenGL auf?
BeitragVerfasst: Sa Jan 15, 2011 18:15 
Offline
DGL Member

Registriert: Sa Okt 18, 2008 11:59
Beiträge: 180
Ich würde InitOpenGL nicht aufrufen bevor das Fenster fertig erstellt wurde.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wo ruft man InitOpenGL auf?
BeitragVerfasst: Sa Jan 15, 2011 18:39 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 20, 2005 13:18
Beiträge: 1054
Wohnort: Dresden
Programmiersprache: C, C++, Pascal, OPL
SDH.Prod hat geschrieben:
Ich würde InitOpenGL nicht aufrufen bevor das Fenster fertig erstellt wurde.

Weil?

_________________
Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut.
Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’.
Und du schaust mich an und fragst ob ich das kann.
Und ich denk, ich werd' mich ändern irgendwann.

_________________Farin Urlaub - Bewegungslos


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wo ruft man InitOpenGL auf?
BeitragVerfasst: Sa Jan 15, 2011 18:46 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
sharkman hat geschrieben:
Soweit ich weiß, sorgt InitOpenGL dafür, dass die OpenGL - Funktionen zur Verfügung stehen dh sie werden aus der dll geladen. Dann werden noch ein paar sinnvolle Zustände gesetzt (zB Tiefentest aktiviert). Das muss natürlich passieren bevor gezeichnet wird, aber wann genau ist eher egal.

Stimmt so nicht. InitOpenGL kann noch keine Zustände setzen, weil noch kein Kontext existiert. Ebenso können nicht alle Funktionen geladen werden, sondern nur die, die es für das Erstellen eines Kontexts braucht. Das Laden der anderen Funktionen geschieht mit ReadExtensions und Konsorten.

SDH-Prod hat geschrieben:
Ich würde InitOpenGL nicht aufrufen bevor das Fenster fertig erstellt wurde.

Das ist damit auch irrelevant, weil für die Operationen in InitOpenGL kein Kontext gebraucht wird.

Warum schaut denn niemand in den Quellcode anstatt hier haltlose Vermutungen in den Raum zu brüllen?

Greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wo ruft man InitOpenGL auf?
BeitragVerfasst: So Jan 16, 2011 09:42 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 11, 2009 08:02
Beiträge: 532
Programmiersprache: pascal (Delphi 7)
Lord Horazont hat geschrieben:
Warum schaut denn niemand in den Quellcode anstatt hier haltlose Vermutungen in den Raum zu brüllen?
Wahrscheinlich weil man in einer dll Hexcode erwartet, und den nicht jeder lesen kann


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wo ruft man InitOpenGL auf?
BeitragVerfasst: So Jan 16, 2011 13:02 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
sharkman hat geschrieben:
Lord Horazont hat geschrieben:
Warum schaut denn niemand in den Quellcode anstatt hier haltlose Vermutungen in den Raum zu brüllen?
Wahrscheinlich weil man in einer dll Hexcode erwartet, und den nicht jeder lesen kann

dglOpenGL.pas, such mal nach InitOpenGL. Wie könnte eine DLL ihre eigenen Funktionen laden? Oder gar deren Funktionspointer exportieren?

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wo ruft man InitOpenGL auf?
BeitragVerfasst: Mo Jan 17, 2011 09:21 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
gustaf hat geschrieben:
Ich kann es nich verstehen warum InitOpenGL nicht in der Abschnitt "initialization" aufgeruft wird.

Folgendermassen wird es bei mir getan und wenigstens wirkt der Beispiel QuickStart problemfrei.

Sicher funktioniert das so. Es spricht ja auch nicht dagegen, dass du als Entwickler das so bei dir machst. Es so zu machen ist ja schließlich deine freie Wahl. Hab ich mir sagen lassen.

Das das so gemacht wurde wie es gemacht ist hat aber durchaus auch einen Sinn.
- Die Funktion benötigt durchaus einen moment Zeit. Dank schnellerer Maschienen immer weniger und einige der Methoden die dort geladen wurden, wurden ausgelagert. Wenn man das selbst aufrufen muss kann man das als Entwickler besser Steuern wo das passiert und wo nicht.
- Die Methode hat 2 Parameter. Auch wenn man da eher nichts dran drehen muss aber es gibt sie. Man kann also als Entwickler eine alternative OpenGL und GLU Implementation angeben. Früher ganz und gar nicht ungewöhnlich. Heute schon etwas. Wenn das aber fest im Code steht wäre es unpraktisch. Denn dann würde es in jedem Fall mit den Standardwerten ein Mal aufgerufen werden. Ob man es haben will oder nicht.
- Last but not Least. Auch wenn man das zur Entwicklung noch nicht wusste (zu mindest ich) hat sich im Nachhinein doch als Sinnvoll herrausgestellt. Denn in Linux haben Bibliotheken keinen Initialization Abschnitt. Der Aufruf würde also nicht stattfinden obwohl man glaubt, dass es aber passiert ist. Mag sein, dass FreePascal das mitlerweile irgendwie hingetrickst hat. Ist mir aber eigentlich auch egal. Primär ist es aber der Zweite und zu einem kleinen Teil der erste Punkt weswegen es so ist wie es ist.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 16 Queries | GZIP : On ]