Shader glGetActiveUniform Issue

BlitzMax Forums/OpenGL Module/Shader glGetActiveUniform Issue

Drey(Posted 2006) [#1]
Local ListSize, MaxLen
		glGetProgramiv(ProgramID, GL_ACTIVE_UNIFORMS, 			Varptr(ListSize) )
		glGetProgramiv(ProgramID, GL_ACTIVE_UNIFORM_MAX_LENGTH, Varptr(MaxLen) )
		
		Local Str:String[ListSize]
		Local Size, GLTypes, LengReturn
		
		Local Name:Byte Ptr 
		For Local I = 0 To ListSize - 1
		
			glGetActiveUniform(ProgramID, I , MaxLen, Varptr(LengReturn) , Varptr(Size) , Varptr(GLTypes) , Varptr(Name) )
			
			Str[i].fromCString(Name)
		
		Next
		
		ActiveUniformList = Str


The shader works fine when i comment glGetActiveUniform out. The program shuts down when i try to use the command. Any suggestions?


Drey(Posted 2006) [#2]
Name:Byte Ptr -> Name:byte[]

works now :).


Chris C(Posted 2006) [#3]
so whats going on there?


marksibly(Posted 2006) [#4]

Name:Byte Ptr -> Name:byte[]


No!

The last parameter should be a byte buffer that receives the string!

Try...
		Local maxlen=GetObjectParameteri( glprogram,GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB )

		Local buf:Byte[maxlen+1]

		For Local i=0 Until GetObjectParameteri( glprogram,GL_OBJECT_ACTIVE_UNIFORMS_ARB )
		
			Local glsize,gltype
		
			glGetActiveUniformARB glprogram,i,maxlen,Null,Varptr glsize,Varptr gltype,buf
			
			Local name$=String.FromCString(buf)
			
		Next