DGL
https://delphigl.com/forum/

Zuverlässige Methode um rauszufinden ob GLSL unterstüzt ist?
https://delphigl.com/forum/viewtopic.php?f=20&t=6211
Seite 1 von 1

Autor:  Aya [ Fr Dez 15, 2006 16:12 ]
Betreff des Beitrags:  Zuverlässige Methode um rauszufinden ob GLSL unterstüzt ist?

Hi,

gibt es eine wirklich zuverlässige methode rauszufinden ob GLSL unterstüzt wird?
Ich dachte, ich muß einfach nur überprüfen ob diese 3 Extensions vorhanden sind:

GL_ARB_shader_objects
GL_ARB_vertex_shader
GL_ARB_fragment_shader

Aber, auf einem Notebook mit einer "MOBILITY RADEON 9700 x86/SSE2", sind diese 3 Extensions zwar vorhanden, aber wenn ich:

glGetString(GL_SHADING_LANGUAGE_VERSION_ARB);

mache, kommt nur ein leerer String bei raus.

Auch wenn ich versuche die shader zu kompilieren, egal wie unaufwendig sie sind schlägt jedesmal das compilieren fehl ohne eine Fehlermeldung zu liefern..


Deshalb, gibt es noch einen anderen weg zu schauen ob GLSL benutzt werden kann?

Aya~

Autor:  oc2k1 [ Fr Dez 15, 2006 16:41 ]
Betreff des Beitrags: 

Überprüf erst mal ob du einen alten Treiber hast. GL_ARB_vertex_shader und
GL_ARB_fragment_shader zu überprüfen reicht. Wenn es ein total verbugter treiber ist kann eh nichts mehr helfen... Ob der Versionsstring schon in der 1.0 funktionieren muss weiß ich nicht, allerdings wäre die die minimale Version, die man immer verwenden kann wenn glsl unterstützt wird.

Autor:  yonibear [ Fr Dez 15, 2006 16:41 ]
Betreff des Beitrags: 

Zu den Extensions die man eigentlich noch prüfen muss gehört theoretisch auch GL_ARB_shading_language_100.
Trotzdem sollte diese Karte natürlich Shader unterstützen. also läuft irgendwas anderes schief. Neue Treiber sind aber installiert?

Autor:  WhiteHunter [ Fr Dez 15, 2006 17:55 ]
Betreff des Beitrags:  Re: Zuverlässige Methode um rauszufinden ob GLSL unterstüzt

Aya hat geschrieben:
auf einem Notebook mit einer "MOBILITY RADEON 9700 x86/SSE2"

Das kommt mir sehr bekannt vor. Ich hatte mal das gleiche Problem mit Shadern auf ner Mobility und dem (aktuellsten) Notebookhersteller-Grakatreiber, der (dank dem NB-Hersteller vs. Grakatreiber-Desaster) statt OGL 2.0 ne seltsame Mixtur aus 1.5 und 1.2 "unterstützt" hat. Also würde ich mal schwer auf die Treiber tippen, da es mehr Extensions (zumindest unter 2.0 bzw. GSL 1.2) auch mW. nicht gibt.

MfG

Autor:  Finalspace [ So Jan 07, 2007 22:19 ]
Betreff des Beitrags: 

Also mit den TMU´s kann man ziemlich gut prüfen ob der treiber abgekackt ist, oder ob die karte es nicht kann.

Ich mach das so:

Code:
  1.  
  2. FragmentProgramSupported = r3dSupportedExtension("GL_ARB_fragment_program") || r3dSupportedExtension("GL_ARB_fragment_shader");
  3.  
  4. VertexProgramSupported = r3dSupportedExtension("GL_ARB_vertex_program") || r3dSupportedExtension("GL_ARB_vertex_shader");
  5.  
  6. ShaderSupported =  r3dSupportedExtension("GL_ARB_shader_objects") && (FragmentProgramSupported ||
  7. VertexProgramSupported);
  8.  
  9. GLSLSupported = r3dSupportedExtension("GL_ARB_shading_language_100") && ShaderSupported;
  10.  
  11. if (FragmentProgramSupported || VertexProgramSupported)
  12.         glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS_ARB, &TMUs);
  13. else
  14.         glGetIntegerv(GL_MAX_TEXTURE_UNITS, &TMUs);
  15.    
  16. MultiTexturingSupported = r3dSupportedExtension("GL_ARB_multitexture") && (TMUs > 0);
  17.  


Beachte die 3 zeilen welche nach dem GLSLSupported kommen.
Wenn dein treiber meint er kann shader, dann prüf dann einfach via GL_MAX_TEXTURE_IMAGE_UNITS_ARB ob er wirklich >4 TMUs hat. Funzt ziemlich gut, mein lap hatte nämlich das gleiche prob gehabt mit dem orig. acer treiber für die X700.
Shader hatte sie zwar drin, so aber die TMUs waren 0 wenn ich via GL_MAX_TEXTURE_IMAGE_UNITS_ARB geprüft habe, somit bug im treiber :P

Für laps empfehl ich übrigens den Omega Driver zu verwenden, bei ATI usern !

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/