buggins/dlangui

[Linux example1] OpenGL tab seems to grey out the UI

Closed this issue · 9 comments

Hello!

This issue only happens on master. The latest release seems to be fine. You can see in one of the screenshots that all the elements appear inactive. When the application first starts up, it's fine. Clicking on the OpenGL tab makes everything appear in this inactive state, though I can still interact with things.

I am running on Fedora 37, under the GNOME DE. I tried with both X11 and Wayland, same result. This only happens on Linux from my testing.

Screenshot from 2023-01-09 09-56-33

image

Unfortunately, I can't reproduce on KDE. Any build options by any chance?
image

No special build options. Just a fresh clone. dub run --build=release

Since this seems to happen when going to the OpenGL tab, my initial thought is that perhaps it's an OpenGL driver implementation oddity. I'll play around with the OpenGL code later to see if I can find anything.

I run an AMD RX 6600XT, what are you running?

I'm running Majaro KDE with Intel integrated video card. I also checked a release build, and it works fine as well.

It might be either a gnome-related issue, either a video card related issue. I'll try setting up a gnome DE in a VM to test, but some time later.

It appears to be related to this: https://github.com/buggins/dlangui/blob/master/examples/example1/src/widgets/opengl.d#L167

checkgl!glEnable(GL_POLYGON_SMOOTH);

This is what causes that issue. If I add a corresponding checkgl!glDisable(GL_POLYGON_SMOOTH); at the end, the issue is then only limited to the cube and not the whole application.

I don't know anything about GL_POLYGON_SMOOTH or why it's broken for me, but I would definitely at least disable any enabled features at the end of this function so that they don't affect the whole application.

It appears to be related to this: https://github.com/buggins/dlangui/blob/master/examples/example1/src/widgets/opengl.d#L167

checkgl!glEnable(GL_POLYGON_SMOOTH);

This is what causes that issue. If I add a corresponding checkgl!glDisable(GL_POLYGON_SMOOTH); at the end, the issue is then only limited to the cube and not the whole application.

I don't know anything about GL_POLYGON_SMOOTH or why it's broken for me, but I would definitely at least disable any enabled features at the end of this function so that they don't affect the whole application.

Feel free to PR it, I'd be glad to accept it :) On the other hand, it could be wise to not enable GL_POLYGON_SMOOTH, as there is no need for it. AFAIK, it enables multisampling, which is currently unsupported by this example anyway.

So, if removing GL_POLYGON_SMOOTH fixes everything for you, please PR it :)

As far as multisampling is concerned, is this what the call to checkgl!glEnable(GL_MULTISAMPLE); is for? So that should be removed as well if GL_POLYGON_SMOOTH is removed?

As far as multisampling is concerned, is this what the call to checkgl!glEnable(GL_MULTISAMPLE); is for? So that should be removed as well if GL_POLYGON_SMOOTH is removed?

Yes, that could be removed too. Just check that it does fix everything for you c:

Alrighty, PR is open. This definitely does fix my issues. From what I've read, GL_POLYGON_SMOOTH is apparently not very compatible with depth testing.

Yea, I'm gonna close tis for now if it's fixed :)