Hello Vade,

Yeah, I think this is what I need to do. Actually I need to switch to QCRenderer anyway, because QCVIew has a really nasty issue where it stops rendering if the window is minimized (in my case, it's a paint tool and the artist would lose their work!). The workaround looks pretty bad, so QCRenderer it is.

I don't need AA (actually it'd harm quality in this case.. i had to turn off bilinear filtering too :) but am I right in thinking that QCRenderer has better performance?

I guess what Troy is referring to is binding within IB? I've had a few issues where my app will crash cocoa simulator with certain bindings, and it will build but crash when run, but I assumed that was user error :)

Chris


On 6 Nov 2008, at 05:34, vade wrote:

Im not sure what bug Troy is discussing (would you care to comment Troy? - or did I miss it?), but I am passing output values from one composition serially to other compositions. Id say the best , instant, no latency and non-networked way would be to make a series of QCRenderers, and get the value of some output key, and pass it to the value of some input key. This is essentintially what Troy is saying; so maybe im being verbose but:

say you have 2 QCRenderers* someRendererA,  someRendererB;

//you would do something like (this is psuedo/from memory code)

// this renders the composition, which sets the values for all output keys
[someRendererA renderAtTime:someTime arguments:someArguments];

// this passes the value published port myOutputKey from renderer A to the published input port myInputKey for renderer B [someRendererB setValue:[someRendererA valueForOutputKey:@"myOutputKey"] forInputKey:@"myInputKey"];

// now render renderer B
[someRendererB renderAtTime:someTime arguments:someArguments];

that *should* be it!

Is this helpful?

I wouldnt bother with a QCView, as it doesnt give you control over the openGL context, and you can do nice things like enable MSAA in your pixel format, which gives you REALLY nice and clean results compared to a QCView. You also have complete control too... I think I have somewhere some examples of QC platonics rendered with MSAA on and off. Makes a big difference imo.

On Nov 5, 2008, at 9:03 PM, Troy Koelling wrote:

It should be possible to bind an output port to an input port of another composition, but there was a bug in KVO last I checked. I don't know if that got fixed yet or not, but I think the answer is no.

The network stuff will have some inherent latency, even if the loopback is instant (you would know better than me I guess :) The network patch is asynchronous so values will not be transmitted instantly.

There may be other tricks, but I think fastest, most reliable way to send the values across would be to do it in code. You can subclass the QCView with your own object and override renderAtTime:arguments:. At the start of this method, set any inputs you would like to set, call [super renderAtTime:] and then setValueForInputKey: the inputs of the second composition with the values you read of [self valueForOutputKey:]. The entire method should be quite minimal if you control what the keys/port types are for both compositions.

Sorry that binding stuff isn't worked out, I'll see if I can get some action on that bug.
Troy

On Nov 5, 2008, at 5:43 PM, Chris Wood wrote:

Steven,

It's being set in composition 2 (based on mouse input in that window), and sent to composition 1. I'll also bind it to a text field for numeric output, but that part isn't an issue. Both compositions are running in QCViews linked to PatchControllers.

Chris


On 6 Nov 2008, at 01:34, Steven Sokulski wrote:

Chris

Where is the signal you want to work with coming from? Is it being generated inside the first composition? Or is it being sent from a control that is bound to the composition?

Steven

On Nov 5, 2008, at 3:53 PM, Chris Wood wrote:

Steven,

I've considered it, but this is for use in a commercial app. It could be installed literally anywhere, and I really don't want to rely on any network being available - it introduces too many unknowns. Otherwise, it'd be the best way by far I think.

Chris


On 5 Nov 2008, at 23:49, Steven Sokulski wrote:

Chris

Your best bet is to either use a combination of Network Broadcaster and Network Receiver or use the Network Synchronizer. The Broadcaster / Receiver combo is best when you need a value to flow from one QCview to another. Synchronizer works by keeping the value in sync among two or more compositions.

Steven Sokulski
_______________________________________________
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/psonice%40gmail.com

This email sent to [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/tkoelling%40apple.com

This email sent to [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/doktorp%40mac.com

This email sent to [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