Ich hab seit einiger zeit meine Delphi-version geändert und verwende jetzt Delphi 2009. Dabei habe ich allerdings das Problem, dass das Multitexturing nicht funktioniert. Ich habe ständig eine AccessViolation wenn der Befehl
Code:
glActiveTexture(GL_TEXTURE0);
oder
Code:
glActiveTextureARB(GL_TEXTURE0_ARB);
aufgerufen wird. Ich kann ja auf Multitexturing verzichten, nur finde ich es blöd, dass dann Performance darunter leidet ...
Versuch mal ein glEnable(GL_TEXTURE_2D) davor zu packen. Sofern du kein Multitexturing verwendest, kannst du das glActiveTexture auch einfach weglassen. Texturstage 0 ist standardmäßig aktiv.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Ist das rein zufällig eine AcvessViolation an der Adresse $00000000? Wenn ja, dann würde mich mal interessieren ob die nur in Delphi 2009 kommt oder auch vorher. Wenn die immer kommt, dann kann es sein, dass entweder deine Grafikkarte/Treiber kein Multitextexturing unterstützt oder aber, dass der OpenGL Header nicht richtig initialisiert wurde. Also das entsprechend nicht alle Funktionspointer vernünftig geladen wurde.
PS: Die dglOpenGL ist nicht richtig Delphi 2009 kompatibel. Es könnte also auch gut sein, dass es damit Probleme gibt. Was mitunter nicht auszuschließen ist. Im Zweifel schau dir mal folgenden Beitrag von Noeska an. Als Hotfix sollte das genügen. Allerdings als entgültige Lösung gefällt es mir nicht genug.
Ja, es liegt auf jeden Fall an Delphi 2009, unter 2007 hatte ich diese Probleme nicht und die Adresse ist auch 00000000.
Ich schaue mir mal den Link an!
Vielen Dank für die Hilfe!
Anmeerkung: Der Link funktioniert! Das Multitexturing klappt jetzt endlich wieder
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Dann liegt es daran, dass die Methodennamen konstante Strings sind. In Delphi 2009 sind Strings ja WideStrings. Die Methoden zum Auslesen erwartet aber AnsiStrings. Durch die Übergabe als Pointer wird aber ein WideString übergeben. Entsprechend findet er die Methoden nicht und liefert auch keine Adresse zurück. Ergo sind alle Pointer nil und erzeugen beim Aufruf Fehler. Also zur Erklärung was da genau passiert.
Mitglieder in diesem Forum: 0 Mitglieder und 4 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.