Replies: 5 comments 26 replies
-
The name of the In the current master branch, there's a new render-to-FBO method which might work a bit better with Qt, but I was never successful in getting Qt and projectM to work well together. There are no OpenGL errors, but some objects projectM allocates in OpenGL (VBOs, FBOs and textures for example) randomly vanish after the first frame, as if the GL API forgets about them. I've checked different things like using the same thread, making the Qt GL context current manually everywhere, late-initializing projectM in the first draw call and not in the setup method, plus other things, but the GL objects still went missing. I haven't seen this behaviour with any other OpenGL integration - just in Qt. So this might be some specialty within Qt's OpenGL wrapper that may cause this. Or some mismatch between the actual GL functions called from Qt and projectM. The only way of getting projectM to work is using a plain QOpenGLWindow, and drawing directly into the native surface. This makes it harder to integrate projectM into any UI though. If you can find out anything that goes beyond that - please let us know! I'm highly interested to find out what exactly breaks projectM within Qt. |
Beta Was this translation helpful? Give feedback.
-
Regarding the linked discussion about projectM in Linux distros: our main issue is that there are no package maintainers for Debian-based distros who could update it. Ubuntu for example still ships projectM 2.1.0 in their latest 24.04 release, which is an ancient version. Debian updated to 3.1.12 in Debian 12, so there seems to be someone who cared about it. Here's a nice overview of projectM versions in all major distros. The old 3.1.12 release has many unfixed crashes and is visually far behind the current 4.1.x release of libprojectM, is heavier on the CPU and can't even run a major part of the available Milkdrop presets. That said, I'd strongly recommend using the current release, and use it as some kind of leverage to push distro maintainers to update the package (or at least add a new |
Beta Was this translation helpful? Give feedback.
-
I'm still having no luck with ProjectM4, it's not showing anything. |
Beta Was this translation helpful? Give feedback.
-
Fixed a bug in master (see PR #827) causing the GL_INVALID_ENUM error. That might have caused some problems in Qt's rendering, so could be worth a try and check again with the fix applied. |
Beta Was this translation helpful? Give feedback.
-
Hello, I'm really trying hard to help integrate this for almost two months. But now I'm more than completely lost, because it does not make any sense. After a lot of effort I've created a class to spawn an SDL2 OpenGL 3.3 core profile window, put all components like the buffer consumer, interface etc, in the same class and thread, trying to follow the sdl2 frontend specs at all times. The "VisualizerConteiner" from Strawberry instantiates this "VisualizationSDL2" class, which is kinda like a mini-sdl2 frontend with all components inside. I made this way to guarantee no race conditions or OpenGL context issues, etc.
Certainly I must be missing something, because the results are the same as with several other attempts I made with QOpenGLWindow:
So this is not a QT bug, its something else we are missing, because SDL2 also does not work. Here is the code, sorry for posting here, but its not big at all. Its a little mess because I was constantly debugging and changing stuff..... I would really appreciate if anyone had the time to look into it just to figure something I cannot understand because of my own limitations. TKS
|
Beta Was this translation helpful? Give feedback.
-
I'm replying to this: https://forum.strawberrymusicplayer.org/topic/1286/reintegrate-projectm-visualizer/13
I've started porting the old projectm code from Clementine here:
strawberrymusicplayer/strawberry#1467
One major issue is that clementine was using the deprecated
QGLWidget
class, and with the newQOpenGLWidget
class only some of the projectm visualizations works.I've also tried to port to projectm version 4 with the C API, but I don't see any replacement for
projectM_resetGL
which is used here:https://github.com/strawberrymusicplayer/strawberry/blob/5a4c00a30093883d9cc3c2e8e0564e5408c8aae1/src/visualisations/projectmvisualisation.cpp#L212
Beta Was this translation helpful? Give feedback.
All reactions