PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ATI und GLSL


del_4901
2006-07-03, 12:50:18
Hab hier einen Ati Lappi vor mir mit X700 und Catalyst 6.5

Aber irgendwie checkt es der Ati Treiber nicht meine Uniforms zu ändern. Muss ich da irgendwas beachten? Bei NV klappt alles.

Shader compelliern, linken, Uniform Locatoren bestimmen.

Dann einfach mit glUniform[1,2,3,4][i,f](v) ändern ... klappt aber bei ATI nicht ... ich dreh am Rad ...!

ollix
2006-07-03, 13:36:33
Ich hatte zumindest in dem Zusammenhang mal was mit ATi gelesen; muß mal eben suchen,

EDIT:
The first thing you have to do is to get the memory location of the variable. Note that this information is only available after you link the program. Note: with some drivers you may be required to be using the program, i.e. you'll have to call (openGL 2.0) glUSeProgram or (ARB extensions) glUSeProgramObjectARB before attempting to get the location (it happens with my laptop ATI graphics card). quelle (http://www.lighthouse3d.com/opengl/glsl/index.php?ogluniform)

del_4901
2006-07-03, 13:51:31
das hatte ich schon so.

sowie innerhalb, als auch außerhalb von glUseProgram ändert er es nicht ... *grml*

Asmodeus
2006-07-03, 13:59:59
Falls Du es nicht zum laufen bekommst, dann könntest Du eventuell noch folgenden Workaround probieren:

Verwende mal statt glUniform( ) einfach glMultiTexCoord[1,2,3,4]fARB( ) um Deine Daten zu übermitteln. Im Shader kannst Du die Daten dann von gl_MultiTexCoord[0...7].xyzw lesen. Das funktioniert natürlich nur dann, wenn Du die MultiTexCoords nicht schon anderweitig komplett verwenden musst und mit den relativ knappen Ressourcen von maximal 8 x 4 Werten auskommst.

Gruss, Carsten.