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

Aktuelle Zeit: Mi Jul 23, 2025 11:22

Foren-Übersicht » Programmierung » Shader
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Fr Dez 15, 2006 16:12 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
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~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 15, 2006 16:41 
Offline
DGL Member
Benutzeravatar

Registriert: So Jun 04, 2006 12:54
Beiträge: 263
Ü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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 15, 2006 16:41 
Offline
DGL Member

Registriert: So Feb 19, 2006 23:46
Beiträge: 55
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?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Dez 15, 2006 17:55 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 07, 2007 22:19 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
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 !


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Foren-Übersicht » Programmierung » Shader


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 9 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.007s | 15 Queries | GZIP : On ]