> But Chris, that may stand for supported public API patches (No macro support, 
> but you *can* still work around that by changing consumers that effect the 
> various gl matrices), but what I was saying is that in Georges domain where 
> Kineme et. all. is in use that becomes an issue.

I know, and this is implied -- when using unsupported stuff, surprise, doing 
fancy things quickly becomes unsupported! :)   (I've been trying to leave that 
out of the conversation to keep things generally applicable in a supported 
manner)

I have never said that pretending the matrices were constant would work well -- 
in fact, I've quite openly said there are cases where even built-in things 
would cause it to fail.  Within supported-land, these aren't as common (but 
still possible!), but straying into unofficial api plugin territory quickly 
puts you on your own.   We're both saying true things here, just with different 
frames of reference -- I'm trying to provide the best possible "will work 
without adding any custom code at all" solution, which is pretty lousy and 
error prone, but on the other hand actually possible, and might actually work 
in limited subsets of use cases (George hasn't filled in any more details to 
know if this is relevant or useful, so I'm simply guessing).  Alternatively, 
you're trying to provide a "works everywhere, always, no matter what" solution 
which is admirable and in fact correct on technical grounds (I've also said 
glGet is necessary for a "works everywhere, always, no matter what" solution).  
It also has the unfortunate side effect that it requires custom plugins and 
patches, which introduces its own problems should you choose to 
distribute/deploy your creation.   :/

We're both being far too transparent to go into marketing, that's for sure :)

> The FOV Macro patch for example will clean up once it leaves its domain (any 
> patches outside of it will behave as through the projection matrix is the 
> standard 'untouched' matrix), but within the FOV patch, the projection matrix 
> must be altered by definition right? Which means you have to get that as well 
> to be certain your math is correct to get the wanted effect?

The FOV macro patch is a private, unsupported patch.  As above, using it places 
you on your own.  (I've intentionally omitted that patch from this conversation 
for exactly that reason).

> Also, getting at what I was stating above about "abuse", you can write a 
> consumer patch that calls glMatrixMode(GL_PROJECTION), glPushMatrix(); 
> glLoadIdentity(); (of course switching back to model view after), and set it 
> to a low layer number.
> 
> Then you later on at a higher layer number run a consumer  it that calls
> 
> glMatrixMode(GL_PROJECTION); glPopMatrix(); (back to modelview).
> 
> and you ought to be back where you left off. This is getting awefully 
> academic now, but in theory it is doable sans private API and encapsulate a 
> 'macro' functionality by nesting things between layers, unless, of course, Im 
> missing some subtely of the new 10.6 QC runtime that yet again changes how 
> layers actually run :) :P

Consumer execution order is strongly defined to be in layer order.  Anything 
with outputs, however, is not.  Thus, any patch that reads the matrices to 
generate output (for later mathematical operations) are at the mercy of the 
runtime executing them before all consumers, or in the middle of consumers, or 
whenever it feels like, or even not at all, in a totally arbitrary undefined 
manner that can change between versions.  So while you could make a "poor-man's 
macro" by having a pair of consumers to set and then unset state with stuff in 
between, you couldn't depend on processor patches utilizing any of that 
modified state (whether or not that's important depends on the use case).  
That's not to say it can execute patches in an incorrect order (except for some 
bugs), but that you absolutely cannot and should not build patches and 
compositions with patch-level execution order assumptions in mind.

--
Christopher Wright
[email protected]



 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Quartzcomposer-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/quartzcomposer-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to