Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Mär 28, 2024 10:06

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 58 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4
Autor Nachricht
BeitragVerfasst: Di Feb 17, 2015 03:41 
Offline
DGL Member

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:
  1. GLSL 3.30 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.00 ES and 3.00 ES.
  2. 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.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Feb 17, 2015 13:44 
Offline
Compliance Officer
Benutzeravatar

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)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Feb 17, 2015 18:02 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1276
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Code:
  1. GLSL 3.30 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.00 ES and 3.00 ES.
  2. linking with uncompiled shadererror: linking with uncompiled shader

Diese Fehlermeldung kann ich auch erzeugen, wen ich den OpenGL-Core 3.3 nicht erzwinge.

Code:
  1.  OpenGLControl.OpenGLMajorVersion := 3;
  2.  OpenGLControl.OpenGLMinorVersion := 3;


Mit diesen Zeilen ist das Problem bei mir dann weg.
In meinem obigen Beispiel sind die Zeilen vorhanden.

Hast du auch einen Intel 4000er ?

Mit Bergmans-Code kann man sicher den Context auch einstellen.

_________________
OpenGL


Zuletzt geändert von mathias am Di Feb 17, 2015 19:48, insgesamt 2-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Feb 17, 2015 18:21 
Offline
DGL Member
Benutzeravatar

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...

MfG Bergmann.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Feb 17, 2015 19:50 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1276
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
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. :oops:

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Feb 19, 2015 20:29 
Offline
DGL Member

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:

Code:
  1. procedure TMainForm.FormCreate(Sender: TObject);
  2. const
  3.   ia: array[0..1] of integer = (0, 1);
  4. var
  5.   pf: TglcContextPixelFormatSettings;
  6.   versionsettings: TglcContextVersionSettings;
  7.   p: PVertex;
  8. begin
  9.   pf := TglcContext.MakePF();
  10.   fContext := TglcContext.GetPlatformClass.Create(RenderPanel, pf);
  11.   versionsettings:=TglcContext.MakeVersion(3,3,true);
  12.   fContext.VersionSettings:=versionsettings;
  13.   fContext.BuildContext;    
  14.   ...
  15. end;

"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.

Beste Grüße,

Dee


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Feb 19, 2015 23:09 
Offline
DGL Member
Benutzeravatar

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...

MfG Bergmann.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Feb 20, 2015 11:33 
Offline
DGL Member
Benutzeravatar

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 networkmy 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


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Feb 20, 2015 16:51 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Es ist schon ein Read-Only property...

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Feb 21, 2015 11:23 
Offline
DGL Member
Benutzeravatar

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 networkmy 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


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Jan 26, 2016 19:34 
Offline
DGL Member

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:
  1. 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:
  1. "#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:
Code:
  1. fContext := TglcContext.GetPlatformClass.Create(RenderPanel, pf,versionsettings);

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).


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Jan 27, 2016 10:31 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Das erinnert mich an den Bug im glCapsViewer. Habt ihr vielleicht ein ähnliches Problem?

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 networkmy 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


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Jan 28, 2016 22:49 
Offline
DGL Member

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?


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 58 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 19 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.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.048s | 17 Queries | GZIP : On ]