Closed Nodrev closed 4 years ago
RenderDoc removes any extensions it does not support from the extension string to indicate that applications should not use them. What you're seeing is expected behaviour, not a bug. The three you highlighted in particular are legacy extensions only relevant to very old versions of OpenGL (before 2.0), and since only core profile GL 3.2 and above is supported then they will likely never be supported.
The Qt error you mentioned is not related to RenderDoc using Qt, since the UI process has no direct interaction with any captured processes in that way. Most likely it is caused by a static QObject somewhere in your code initialising too early while RenderDoc is injecting into the process. This is invalid and Qt documents that QObjects must not be created before the process's single QApplication is created, which should happen inside main().
Thanks for the insights about the static QObject. For the other part, I know that those are "legacy" (althought not deprecated) extensions, and they shall not be used. The problem is that our application depends of a big close sourced library, which is the one who requires those extensions... So, I think I do not have any remaining option to make RenderDoc to work with this application. For my insight, what is the RenderDoc's source code related to extensions listing / removal (I did not find any mention of GL_ARB_fragment_program in OpenGL driver directory)?
Description
Hello, and first, thanks for this great tool, which works great for me usually... but for once, I have an issue!
I'm trying to debug a Qt 5.11.3 32 bits application which uses OpenGL 3.2 on Windows.
At first, I tried to launch the application using RenderDocGUI, but I had a Qt assertion:
As this assertion is thrown each time a Qt event is processed (like a mouse move for example), the application is not usable when launched fromRenderDocGUI. That's not a real problem, it's probably a side effect that both my application and RenderDocGUI are Qt applications, I just mention this here in case someone have the same problem, or hints about the real reason.
To bypass this problem, I choosed to integrate renderdoc using the provided API and 32bit dll. Integration went good, but everytime "renderdoc.dll" is loaded, I have OpenGL extensions mandatory for my application to run which are not listed as "available" anymore...
My applications needs 3 OpenGL (pretty standard) extensions:
I did not see any explicit mention about the fact that those ARB extensions are not supported by RenderDoc, it's seem that hooks registering makes them go away. Is it normal?
Steps to reproduce
When I launch the application without loading "renderdoc.dll", I have the following log (324 extensions listed):
But, if I load "renderdoc.dll" first, I only have 197 extensions listed. I don't care about fancy stuff, but some "standard" extension are not present (and the 3 required extension are in the missing stuff):
I have done a diff which list extensions removed when renderdoc.dll is loaded:
Environment