video out a javascript

Apr 17, 2009 at 8:54pm

video out a javascript

Hi all.
I got a couple of questions;
first one.
I would like to display a “render javascript” (let’s take the jsglnurbstendril-example for instance) by an external monitor.
So i’ve made a “jit.gl.render tender” and a “matrix tender” objects in order to brodcast out the script thanks to the “videout” object… But it doesn’t work.
Do I have to scipt this ? Or is it possible to just use the object vidoout ??

And my second point is: do I have to create a matrix to display an open gl render by an external monitor ? Because apparently, creating matrixes really slows down my computer…

I can not use the jit.gl.asyncread because I am on Max 4.6, Mac.

Thanks for saving me from headhache !!

AD.

#43427
Apr 17, 2009 at 10:02pm

you should be able to render an opengl context to a named matrix to send to qt.videout. if something isn’t working, post a stripped down patch showing your attempt.

this method will possibly be quite slow, btw.

#155804
Apr 18, 2009 at 9:42pm

You are right.
The patch is attached below,
Ad

#155805
Apr 19, 2009 at 8:53am

Here’s the patch with the JS not compiled, thanks to that you can see why Max quit !
Ad

#155806
Apr 19, 2009 at 12:20pm

I’ve fixed it !
All I had to is to delete the “jit.window code” in the js object.

What do you think of this patch below ?
I still have a problem of resoultion.
My matrix is 1000 x 600, it should be enough to have a good image through the videoout isn’t it ?
If you have any ideas …
Thx.
Ad

#155807
Apr 19, 2009 at 5:42pm

i’ve never used videoout, but i assume your output resolution is hardware dependent. isn’t dv 720×480? you should just set your matrix to your output resolution.

you also may want to take a look at jit.gl.asyncread, which will perform the readback to a matrix much more efficiently on most machines.

#155808
Apr 19, 2009 at 5:55pm
Quote:
i’ve never used videoout, but i assume your output resolution is hardware dependent. isn’t dv 720×480? you should just set your matrix to your output resolution.

you also may want to take a look at jit.gl.asyncread, which will perform the readback to a matrix much more efficiently on most machines.

I am on MAX 4.6, there is not the jit.gl.asyncread object…

You never use jit.qt.videoout ? So how do you output two different renders through 2 differents monitors for instance ?

Ad

#155809
Apr 19, 2009 at 6:29pm

two graphics cards, or something like matrox dual-head-to-go

#155810
Apr 20, 2009 at 7:48am

Ok I’ll check it out !
Can you easily route any render window to any monitor ?
Thanks for helping anyway.
Ad

#155811
Apr 20, 2009 at 5:09pm

there’s several recent posts on multiple windows for opengl that you should do a quick search for.

with one graphics card that has two ports, it’s not really an issue. you just drag your window where you want it. depending on what you’re trying to achieve, @shared_context might be the way to go. search for andrew benson’s “preview” jitter recipe for more info.

with two graphics cards, the short answer is to make sure your jit.windows are instantiated on the correct graphics card before you begin rendering (before you turn your qmetro on). otherwise, you may experience a dramatic drop in frame rate. the wat to do this is provide @rect attribute which are the coordinates of your additional monitors. jit.displays can help with this.

actually, why don’t i just quote anton’s definitive response from another mailing list:

Quote:
GL to multiple displays with multiple GPUs can be TRICKY. The issue is you have 2 GPUs, and whenever you move data from GPU a to GPU b, things will *slow down* big time (it reads data back to the main memory then re-uploads it). This also means you should NOT share texture resources across multiple GPUs (using @shared_context etc, as data GPU b needs resides in GPU as vram, and depending on how the OS X driver works it may not be smart enough to know to automatically mirror data in both).

I would make 100% doubly sure that you:

Make 2 completely distinct GL contexts.

Upload your data twice, to each context separately.

Space one window across both monitors on the same GPU (which you cant do if you have GPU a on monitor 1 and 4 (how will it span across?) , fix your display preferences and re-order your monitors physically)

And most importantly you will have to be very careful how you init your jit.gl.renderers -> windows:

If your patch starts up with all windows on a single monitor, turns on rendering, and then moves the windows to their proper location, you’ve effectively initted resources on GPU a, and moving things to GPU b after rendering is enabled DOES NOT MOVE THE RENDER CONTEXT, TEXTURES OR RESOURCES to GPU b. Thus doing that slow ass readback I mentioned.

You can work around this for context a make a named matrix jit.matrix temp_a 4 char 320 240

Send draw_to temp_a, to jit.gl.renderer. This will force the renderer to switch drawing to your context, and THEN to your window, which is now in the right location, and force it to move things onto the proper GPU. Now do the same thing for b.

This stuff is very subtle and somewhat annoying if the conceptual peices as to how GL works are not understood, because the ramifications of ordering things unintentionally the ‘wrong’ way can have serious performance implications.

#155812
Jun 11, 2009 at 7:05pm

I am getting some weird behavior from the jittermatrix I couldn’t figure out what is happening ….
In my java external application I am drawing into JitterMatrix using jit.gl.sketch then display the JitterMatrix in a window. My order of operations are;

(1)Draw some stuff using sketch to JitterMatrix
(2)Change the pixels in JitterMatrix
(3)Draw more stuff using sketch to JitterMatrix
(4) send the JitterMatrix to window

Logically I expected that (2) will change what I have drawn in (1) , then on top of the changes (3) will appear without any affect from (2)
But what I see is (3) is completely missing ????? only (1) and (2) working …
But If I comment out (2) I can see everything is drawn properly

Can you please explain what is happening here ???????????

– Pasted Max Patch, click to expand. –
#155813

You must be logged in to reply to this topic.