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
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
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 network • my 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
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 network • my 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
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.
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.