Hey, ich versuche (mal wieder) mich näher mit OpenGL zu befassen, aber diesmal scheiterts bereits beim Zusammensuchen der richtigen pas Dateien Hab mir die OpenGL15 Datei gezogen, ins Verzeichnis gepackt und anschließend im 2. Anfängertutorial opengl12 durch dglOpenGL (in der uses-liste) ersetzt!
Dann gibt es aber folgenden Fehler:
Zitat:
Operator aurf diesen Operanden nicht anwendbar
an der Stelle
Code:
if not LoadOpenGL then
Halt(100)
In der OpenGL Datei ist LoadOpenGL als Prozedur deklariert (meine ich), und damit kann das natürlich nicht mehr funktionieren... Was mach ich falsch???
thx für Hilfe, mfg
Robert
P.S.: Wieso braucht die Geometry.pas neuerdings noch die Unit VectorTypes?
Zu 1) die OpenGL DLLs werden in dglOpenGL mittels InitOpenGL geladen, danach wird mittels CreateRenderingContext ein OpenGL Renderkontext erstellt und mit ActivateRenderingContext aktiviert - Bei Lischke war das M.E. ebenso, LoadOpenGL und Konsorten dienten nur der Kompatibilität.
Zu 2) von der Geometry.pas schwirren so viele Versionen herum, dass es gar nicht mehr schön ist. Die Lehrreichste ist die Ursprüngliche, in der alles schön in Pascal codiert ist, sodass man Code leicht übernehmen kann, die Interessanteste hat fast alle Funktionen in Assembler codiert, und es gibt sogar eine mit 3D-Now Unterstützung.
Welche du jetzt hast, kann ich dir leider nicht sagen - würde dir aber ohnehin anraten, die Geometry.pas eher als Orientierung zu verwenden, und dir deine eigene Hilfsbibliothek mit mathematischen Routinen zusammenzustellen.
Irgendwann benötigst du ohnehin spezielle Sachen, die dort so nicht vorkommen - und dann ist es praktisch, seine fünfzig benötigten Routinen nicht in siebzehn Bibliotheken verteilt zu haben.
Hm... Dann weiß ich zumindest, dass das alles nicht auswegslos ist Ich glaube, ich hab schon mal irgendwo gelesen, wie man mit diesen Funktionen umzugehen hatte... Aber ich finds nit wieder *heul* Welche Paramter erwarten diese Funktionen denn jetzt von mir???*nicht.durchblick*
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Initialisierung : Ich hab mir extra die Mühe gemacht und der dglOpenGL.pas ne readme.html beigelgt, in der drin steht wie diese initialisiert wird, also lohnt es sich immer in solche Dateien einen Blick zu werfen.
Parametererklärung :
DC = Dein Gerätekontext auf dem du die OpenGL-Szene ausgeben willst
Options = Optionen für den RC (z.b. [opDoubleBuffered])
ColorBits = Farbtiefe
ZBits = Bits für den Tiefenpuffer
Stencilbits = Tiefe des Stempelpuffers
Accumbits = Anzahl der Akkumulationspuffers (auf den meisten Consumerkarten nicht vorhanden, also besser nicht nutzen)
Auxbuffers = Anzahl der Auxilliarybuffers (besser nicht verwenden, s.o.)
Layer = Eigentlich der Layer auf dem GL dargestellt werden soll, aber wird von kaum einer Consumerkarte unterstützt
In OpenGL12.pas verlangt die Funktion noch ne Palette als letzten Parameter. Den haben wir in dglOpenGL.pas allerdings weggelassen, da heute kaum jemand in nem 256-Farbenmodus rendern will.
Also für ein Template das OpenGL12 verwendet, sollte es eigentlich genügen LoadOpenGL (das dort ja schon als "veraltet" markiert war) durch InitOpenGL zu ersetzen.
Ansonsten:
Code:
type
TRCOptions = set of (opDoubleBuffered,opGDI,opStereo);
was soll ich da jetzt noch viel erklären: DC muss halt ein gültiger Gerätekontext eines Fensters sein, den Rückgabewert kannst du dann für ActivateRenderingContext verwenden, damit die aufgerufenen OpenGL Operationen dann auch darin stattfinden (genaugenommen lädt ActivateRenderingContext auch einige Routinen dynamisch nach, die sich etwa bei unterschiedlichen Farbauflösungen ändern könnten). Layer kannst du ignorieren (weiß wirklich nicht, warum Lischke den eingebaut hat, meines Wissens unterstützt ohnehin keine Consumerkarte mehrere Layers...)
Mitglieder in diesem Forum: 0 Mitglieder und 5 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.