ich versuch gerade den neunen 4.4 Header zu implementieren. Dabei ist mir aufgefallen, das glDepthMask(GL_False) nicht funktioniert. => [DCC Fehler] Unit1.pas(190): E2010 Inkompatible Typen: 'ByteBool' und 'Integer'
Laut Wiki sollte dies aber so gehen (und mit den uralt Headern von M. Lischke geht das auch). Was mach ich denn falsch?
Somit wäre folgendes im Header zu ändern: GLboolean = BYTEBOOL; zu ersetzen durch GLboolean = UCHAR;
Ist das korrekt? (So war es in der M. Lischke Version)? Die hat aber einen Einfluss auf viele andere Funktionen in dem Header - scheint dort aber auch korrekt zu sein.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Sollte man nicht eher GL_TRUE und GL_FALSE als ByteBools definieren? ByteBool ist ja der korrekte Pascal-Typ für das was da gefragt ist.
viele Grüße, Horazont
_________________ 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
Ja, klingt logisch. Also muss es heißen: GL_TRUE: ByteBool = True; GL_FALSE: ByteBool = False;
Weiterhin ist dann noch folgendes geändert werden: GLU_TRUE: ByteBool = True; GLU_FALSE: ByteBool = False;
Es gibt aber noch einen weitere Fehler/Verbesserungen:
1.) {$IFDEF CPU386} Set8087CW($133F); {$ENDIF} Hier fehlt die 64 Bit Variante (und das wird benötigt): SetExceptionMask([exInvalidOp..exPrecision]); // disable all FP
2.) Folgendes sollte aus Kompatibilitätsgründen ergänzt werden unter: // Datatypes corresponding to OpenGL12.pas for easy porting TVector3f = TGLVectorf3;
3.) Folgendes gibt in Windows eine Compiler Warnung (das stört leider durchaus) Result := nil; in dglGetProcAddress Line 14875
Den letzten Punkt kann ich mit der letzten Version nicht nachvollziehen, die Warnung wurde afair bereits mit einem vorherigen Commit korrigiert.
Hinweis : Da ich kein Delphi mehr nutze habe ich nur mit FPC getestet (Win32 und Win64). Wäre toll wenn jemand mit nem aktuellen Delphi mal kurz testen könnte obs klappt.
Habs getestet. Du hast recht, Die Warnung ist weg (ich habe mit Header 4.4 Download von DelphiGL gearbeitet).
Aber trotzdem hast du einen Fehler drin:
Dein Code (die 64 Bit Sahleife wird nie ausgeführt): {$IFDEF CPU386} Set8087CW($133F); {$IFDEF DGL_64BIT} SetExceptionMask([exInvalidOp, exDenormalized, exZeroDivide,exOverflow, exUnderflow, exPrecision]); {$ENDIF} {$ENDIF}
Dann eher so: {$IFDEF CPU386} Set8087CW($133F); {$ENDIF} {$IFDEF DGL_64BIT} SetExceptionMask([exInvalidOp, exDenormalized, exZeroDivide,exOverflow, exUnderflow, exPrecision]); {$ENDIF}
Die Definition PPointer und PCardinal ist ja ab Delphi7 nicht mehr nötig. Deren definition führt aber leider in höheren Delphi zum Mix der Typen (mal von System, mal von OpenGL) Ich würde vorschlagen diese Typen nur für die zu definieren, die sie auch brauchen. z.B.:
{$IFDEF DELPHI6_AND_DOWN} // Needed for Delphi 6 and less (defined in system.pas for Delphi 7) PPointer = ^Pointer; PCardinal = ^Cardinal; {$ENDIF}
Mitglieder in diesem Forum: 0 Mitglieder und 10 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.