I spend a large portion of the day studding the base actor class (5600+ lines 
of code, wow :)), and more specifically, the rendering.

And one thing drew my attention - the shader compiling/binding/linking part.
I spend about an hour looking for that, first in the actor, than in cogl, even 
in the backend until I finally found it in well...the shader files.
I know it might looks obvious, but it is not to obvious in practice, because 
traditionally that phase is handled by OpenGL API and compiling/binding/linking 
itself does not have anything to do with the shaders themselves. Even more so, 
the bind_shader function in Clutter right now is composed entirely of cogl 
calls. My guess is that the function is not in the cogl code simply because it 
has to be exposed without the need of cogl to be included, and that is 
perfectly reasonable (though it could be exposed through Actor like 
clutter_actor_set_shader_param )...

...But my main point is - do we really need clutter_shader_bind to be exposed 
at all. Its very very low level function (much like glBlend or glStencilFunc or 
whatever) and makes sense only to graphic programmers (not the casual Clutter 
users) and only in the actual drawing context, not in the top level scene 
creation/management stage. Because of this it is not obvious that the function 
must be called at all, and even if the user does know, there is no way of 
telling when it is to be called (after or before setting the params? or calling 
actor_show? or actor_set_shader?) Even what actor does it effect is not clear 
from the statement itself. 
In the end, from end user perspective , actor_set_shader should be enough: Its 
sets some "property" on my actor, that changes the way it looks. Just like 
set_size or set_position.

.
I can image how annoying this kind of mails for the team are, neither bug 
report nor feature request, and how terribly wrong I can be, but I decided to 
share my thoughts after all :)
 I`ll be happy to hear your comments, 10x.
MihailNaydenov

PS In the test-shader example, is it really necessary to call 
clutter_actor_set_shader (<actor>, NULL), which destroys the previously set 
shader, before setting a new one? Looking at the set_shader code, its seams not 
only unnecessary, but even faster if you call it the second time because it 
skips the creation of the params hashtable.



      
____________________________________________________________________________________
You rock. That's why Blockbuster's offering you one month of Blockbuster Total 
Access, No Cost.  
http://tc.deals.yahoo.com/tc/blockbuster/text5.com
-- 
To unsubscribe send a mail to [EMAIL PROTECTED]

Reply via email to