leadedge / ofxNDI

An Openframeworks addon to allow sending and receiving images over a network using the NewTek Network Device Protocol.
GNU General Public License v3.0
134 stars 48 forks source link

Sender not working with programmable renderer #10

Closed mimetikxs closed 4 years ago

mimetikxs commented 5 years ago

Hi,

I had to fix gl3 shaders by adding #version 150\n but when I run example-sender using programmable renderer I only get a blue screen in the receiver (with no rotating cube).

The cube is drawn correctly in the example app.

Any clues about what's causing the issue?

leadedge commented 5 years ago

You are right that the shader needs "#version 150". Unfortunately the "#" character interferes with the stringification. The only way around this really is to use shader source files. This can be done but not at the moment. Meanwhile you can bypass the problem by using RGBA instead of YUV when you create the sender. Then the shaders are not used.

ndiSender.CreateSender(senderName, senderWidth, senderHeight, NDIlib_FourCC_type_RGBA);

Then the NDI system does the conversion.

leadedge commented 5 years ago

I looked into this further. Actually "#version 150\n" with the "\n" at the end is OK. I forgot about that. You will have found the stray "}" character at the end. Anyway, there seems to be a problem with the shader and I am not sure what. I don't think the coordinates are coming out right.

At the moment I am thinking of removing them. If we started with YUV without having to convert, it might be more efficient but because the conversion from RGBA has to be done sometime, it's probably just as efficient to let the NDI shaders do it.

I will look some more when I get a bit more time.

mimetikxs commented 5 years ago

Yes, I remember having to remove the extra "}".

Thanks very much for your quick response, I'll use your workaround for now and see if the performance varies much with the NDI shaders.

leadedge commented 4 years ago

As said, with update to NDI 4.0, shaders are now removed. Conversion from RGBA will be done by the NDI system.