Spout

Error Framebuffer Is Incomplete

My sender to test my receiver looks like this :
Spout 2.007 portable
NVIDIA GeForce RTX 3090
Compatible with OpenGL/DirectX interop

In my code, the receiver is setted :
IsGLDxREady() true;
Set.SetAdapter(0) to be sure that it use my “NVIDIA GeForce RTX 3090”.

The receiver is connected to the sender but can read the frame :
My error is linked with the framebuffer Attachment in GetSharedTextureData :
[error] FBO status error 36054 (0x8CD6) - GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT
[error] spoutGLDXinterop::ReadTexture - ReadGLDXtexture failed

I link Spout library is linked with the CMakeLists like in the GitHub.
I init OpenGL with glfw :
glfwInit with GLFW_CONTEXT_VERSION_MAJOR = 4 GLFW_CONTEXT_VERSION_MINOR = 5

Any suggestion to help me with this issue ?

It’s hard to know without more details. Do you have any code that I can look at?

Thanks for your reply.
It’s part of a huge project so I have done a minimal example : GitHub - BiPaulEr/SpoutOpenGL .
The only class to look at is WindowsReceiver and maybe Texture.
I have noticed that :
I comment ReleaseTexture() (activated if ReceiveTexture return false) to keep the Receiver alive even if it can’t received the Texture. So now, if I create a sender, destroy it and create it again, it’s working.

Thanks for taking the time for this.

ReceiveTexture is not right if you include “ext/Spout/SpoutSDK/SpoutReceiver.h”. See line 63.

It looks like the Spout SDK source code files have been mixed with old versions. Try to replace all of them with those in the current Master branch.

I don’t know what the problem is with ReleaseTexture() with the mixed files, but if you get all the files up to date it should work out.

I think I found an missing update problem with the documentation for using a sender list.
(Files > Docs > Sender-list.txt)

After the user selects an index from the list, the receiver should be set to receive from that name.

— after the user selects an index. Check that it exists and switch to it —
if (receiver.GetSender(index, SenderName)) {
    receiver.SetActiveSender(SenderName);
    receiver.SetReceiverName(SenderName);
}

Please let me know if that works OK for you. How did the file change go?

I have update my Spout Folder. And I have change “The mode of operation can be changed to enable the high performance NVIDIA graphics globally for all applications.”. Before, I changed it only for the Spouts executables. Now, it’s working well.
Thanks for your time !

OK that’s good to hear.
I have made some changes to “SetReceiverName” so that it can be used after the user selects a new sender.either to connect to the nominated sender or to the active sender. Changes are in the Beta branch. I am also updating the documentation for the sender list and the website should be ready soon.