Giter VIP home page Giter VIP logo

Comments (7)

TReed0803 avatar TReed0803 commented on September 3, 2024

from qtopengl.

TReed0803 avatar TReed0803 commented on September 3, 2024

Taking a while to update all my stuff... I don't use Windows very often, so maybe give me a few more days to get all my tools working here. I'll hopefully have a fix before the end of the week.

from qtopengl.

csuft avatar csuft commented on September 3, 2024

Thank you for your reply. I'm using Visual Studio Community 2015 and the version is 14.0.24720.00 Update 1.

from qtopengl.

TReed0803 avatar TReed0803 commented on September 3, 2024

The issue is that std::array was altered in recent standards, the iterator type used to be able to be dereferenced like a pointer, however the new C++17 standard makes more provisions around the format of the std::array iterator types. So, I can no longer apply the typename std::remove_pointer<To>::type call that I was doing to get the value type.

Simple fix, we can just say typename To::reference instead. (Though I will need to test and ensure I don't break other platforms. I believe for a while this iterator may have just been implemented as a pointer, which is why I needed to do this... May be a tricky fix not to break others.)

After fixing that I also found that one of the GL calls was not going through the proper context namespace (GL::, which is how we map the global GL function pointers). Again, simple fix just add the GL:: namespace prefix to these calls. (No regression risk here AFAICT)

After fixing that, I find that on my new PC the compute shaders don't compile! This is because for compute shaders gl_FragCoord doesn't technically exist. Some of my helper functions use this input, and I must've been on a more lenient driver before - even though I don't use these functions directly in the compute shader, it's causing shader compilation errors on my current PC.

For this, I will have to devise a mechanism of defining macros to ifdef-out the invalid information for certain compilation units. That will take a tiny bit of work, but not much as far as I can tell.

After fixing that, I noticed that OpenGLLightGroup is failing to draw instanced lights (I'm not sure why, it is crashing). So that is the next thing I need to look at. Commenting out the instanced drawing functions allows everything to render as-expected (sans lights, of course), but I'd like to figure this out before I commit anything.

Thank you for being patient, I will work on this more tomorrow.

from qtopengl.

TReed0803 avatar TReed0803 commented on September 3, 2024

Figured it out, this GL driver doesn't like it when glDrawElementsInstanced is called with an element count of 0. Sounds like a driver bug since the only documented error case is if the values are negative: https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDrawElementsInstanced.xhtml

Oddly, QFileDialog started infinite looping as well. This is because the QFileDialog no longer stops other update signals from being executed... In the past, this was the case and update would block until the file dialog is closed. I have hacked in a bool to counter-act this (I believe it should not be needed, this sounds like a Qt bug - maybe fixed in later versions. THIS IS A RACE CONDITION AND SHOULD NOT BE DONE IN PRODUCTION CODE! However, for demonstration purposes I will accept that this is mostly correct and document accordingly.)

Finally, the lighting equation seems to be banding weird. Everything seems to work with these fixes, but there is some bad maths happening for lighting now. I'll file a separate bug for investigation and commit what I have to hopefully unblock you. If this is anything like the other bugs, it just depends on what GPU you have for whether or not you have the same issue I am seeing - so I can at least unblock you.

Will have a fix published shortly.

from qtopengl.

TReed0803 avatar TReed0803 commented on September 3, 2024

Scratch that QFileDialog business, I'll just use a mutex, it's not like it's that much harder and it sets a better example.

from qtopengl.

TReed0803 avatar TReed0803 commented on September 3, 2024

Issue Resolved in: 91ac4b5

I'm going to close this issue now, there is a rendering bug in some integrated GPUs that I noticed, but that is not pertaining to this. If this issue does not appear fixed, please re-open.

Thanks for the report!

from qtopengl.

Related Issues (2)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.