Registriert: Sa Jan 03, 2015 13:28 Beiträge: 23
Programmiersprache: Lazarus/FPC
Mit den ganzen wundervollen Hilfestellungen und Code-Grundgerüsten habe ich es nun tatsächlich geschafft, das Bergmann-Beispiel ein Wenig zu erweitern und einen kleinen, simplen Normalmap-Shader zum Laufen zu bringen: NormalMap Shader Download
Gestestet habe ich das Programm unter Windows, Linux und Mac, bisher funktioniert es allerdings nur unter Windows. in Linux spuckt das Logfenster u.a. folgende Fehlermeldungen aus:
Code:
GLSL 3.30 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.00 ES and 3.00 ES.
linking with uncompiled shadererror: linking with uncompiled shader
Auf dem Mac lassen sich die Core-Units nicht kompilieren, hierbei scheitert es schon an IFDEF Anweisungen in der Uses-Klausel von einer der Core-Units (bei Bedarf kann ich noch weiter ins Detail gehen).
Ich bin total begeistert davon, wie flüssig der Shader auch mit größeren Bildern läuft, das ist genau das was ich für mein Tool super gebrauchen könnte. Damit wäre zumindest für Windows die Frage geklärt, ob etwas derartiges überhaupt möglich ist.
Ich werde in den nächsten Wochen noch versuchen, das Programm um einige Features zu erweitern (Verschiedene Ambient Lichter, farbiges Spot/Directional Licht, evtl. zusätzliche Maps wie AO und Specularity benutzen,...).
Ganz großes Dankeschön nochmal für die ganze Vorarbeit.
Registriert: So Aug 08, 2010 08:37 Beiträge: 460
Programmiersprache: C / C++ / Lua
Dass es unter Linux nicht läuft, liegt vermutlich einfach an veralteten Grafiktreibern. Wimre supportet Mesa nicht GLSL 3.30, du könntest gucken, ob dein Shader mit GLSL 3.00 läuft, dann würde es vmtl. auch unter Linux mit Inteltreibern funktionieren.
_________________ offizieller DGL Compliance Beauftragter Never run a changing system! (oder so)
Registriert: Di Apr 29, 2008 18:56 Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,
Mac hatten wir bis jetzt gar keine Test-Umgebung. Es war eigentlich von vornherein klar, dass es so wie es jetzt ist nicht funktioniert. Aber wie ich dir letztens schon gesagt hatte lässt sich die Context Klasse relativ einfach erweitern. Am bessten ich setzt mir mal ne VM auf. Was genau hast du für ne Test-Umgebung? Für den Anfang wäre es vlt ganz gut wenn wir ungefähr das selbe haben...
Irgendwie hat es bei meinem Post oben Text abgeschnitten, ich habe ihn wieder ergänzt. Linux macht mir da ab und zu da einen Strich durch die Rechnung.
Registriert: Sa Jan 03, 2015 13:28 Beiträge: 23
Programmiersprache: Lazarus/FPC
@end: Wenn ich im Shader die GLSL Version auf 3.00 setze, bekomme ich schon unter Windows die Fehlermeldung "Version number not supported by OGL driver".
@mathias: Den OpenGL-Core 3.3 zu erzwingen scheint nicht ganz so einfach zu sein wenn man mit TglcContext arbeitet, im Gegensatz zu OpenGLControl. Ich habe es so versucht:
"fContext.VersionSettings:=versionsettings;" produziert allerdings die Fehlermeldung "No member is provided to access property". Major und Minor direkt zuzuweisen mittels "fContext.VersionSettings.Major:=3;" funktioniert auch nicht (argument can't be assigned to).
@Bergmann89: Ich habe einen Mac mini mit 1,4 GHz Intel Core i5, Betriebssystem ist OSX Yosemite 10.10. Als LCL-Schnittstelle wird carbon benutzt.
Registriert: Di Apr 29, 2008 18:56 Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,
gut guck ich mir an wenn ich Zeit dafür finde. @Context: Die Version Info die du da setzt ist nur zum lesen gedacht. Wenn du einen Context mit einer bestimmten Version erstellen willst, dann musst du die VersionInfo als Parameter im Constructor mitgeben, der ist überladen...
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Wäre es dann nicht sinnvoll, die Property read-only zu machen bzw. wenn es noch keine Property ist, es zu einer Property zu machen?
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
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Ach right, ich bin im Post verruscht. Ich dachte wir wären bei "OpenGLControl.OpenGLMajorVersion := 3;"
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
Registriert: Sa Jan 03, 2015 13:28 Beiträge: 23
Programmiersprache: Lazarus/FPC
Nachdem ich endlich mal wieder etwas Zeit dafür hatte, habe ich nochmal versucht, das Ganze unter Linux zum Laufen zu bringen. Habe Ubuntu upgraded auf 15.04 und Mesa auf 11.2.0-devel. Ich bekomme nach wie vor dieselbe Fehlermeldung
Code:
GLSL 3.30 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.00 ES and 3.00 ES.
Weitere Recherchen haben ergeben daß der Treiber durchaus fähig sein müsste, mit GLSL 3.3 zu arbeiten, allerdings muss man angeblich sowohl OpenGL 3.3 als auch GLSL 3.3 core erzwingen. Letzteres ist einfach durch
Code:
"#version 330 core"
im shader einzustellen, aber ich habe nach wie vor Probleme, das OpenGL core profile in Lazarus einzustellen. Probiert habe ich, die versionsettings (versionsettings:=TglcContext.MakeVersion(3,3,true)) als weiteren Parameter beim Erstellen des Kontexts zu übergeben:
Dies führt bei mir unter Windows zu einem schwarzen, leeren Renderpanel, und Ubuntu spuckt eine Fehlermeldung aus: "GLX_ARB_create_context not supported" (uglcContextGtk2GLX.pas).
_________________ 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: Sa Jan 03, 2015 13:28 Beiträge: 23
Programmiersprache: Lazarus/FPC
Ja, sieht so aus als wäre das Problem dasselbe. "Core profile shading language" zeigt bei mir unter glxinfo ebenfalls 3.30 an. Im verlinkten Thread wurde das Problem ebenfalls durch erzwingen eines Core-Contexts gelöst. Kann denn jemand bestätigen ob mein Ansatz, das durch den zusätzlichen versionsettings Parameter in TglcContext.GetPlatformClass.Create zu lösen, richtig war?
Mitglieder in diesem Forum: 0 Mitglieder und 25 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.