[GEM-dev] Re: GEM shader usage

IOhannes m zmoelnig zmoelnig at iem.at
Tue Nov 22 11:12:46 CET 2005


james tittle wrote:
> ...picking up this thread again:
> 
> ...I've now got [glsl_vertex] & [glsl_fragment] working (ie. loading  
> and compiling), but am temporarily stuck at how to pass on the  
> GLhandleARB (which is actually a void*) to [glsl_program]?  In  

hmm. looking in my glext.h and glew.h it says:
typedef unsigned int GLhandleARB;       /* shader object handle */

which would be very simple to handle (just like in [pix_multitexture]).


> [pix_multitexture] I just used outlets with casts to t_float for the  
> texture ID's, but I'm not sure how we should just pass a pointer to  an 
> opaque driver object (guess I need to re-consult IO's "how to  write and 
> external")...?  Should it be auto-paired with a message,  like [vertex 
> GLhandleARB< ?  This then would trigger an auto- registration of 
> compiled shader objects in a kind of hash table,  which would then be 
> linked if something changed...then if linking  goes ok, it would 
> auto-discover the active Attrib and Uniform  variables, and output a 
> list of them to console (to remind the user/ programmer), but also set 
> up named/numerical messages to accept...

yes, that sounds ok..

as for linking of the shaders (just an idea):
how about sending 2 lists [vertexProg <v1> <v2> ...( and [fragmentProg 
<f1> ...( to the [glsl_program]; in the next render-cycle, the so 
changed program would automagically get recompiled and used (until 
someone sends other fragment/vertex-modules to the object)

if GLhandleARB is really a pointer, we could also abuse the 
"gpointer"-type (like the GemState-passing); however if the types are 
different on the platforms (which i doubt), a registration mechanism 
that can be called with symbolic id's would really be better.



> 
> ...I figured this method would work better than trying to add some  kind 
> of stuff to GemState, because we'd be true to glsl's flexibility  in 
> linking...
> 

yes, i agree that it would be better to _not_ add these programs to the 
GemState (it's already crowded, and it is hard to exchange data between 
gemchains)

mfg.asdr.
IOhannes









More information about the GEM-dev mailing list