Qt
JUCE
Our great sponsors
Qt | JUCE | |
---|---|---|
26 | 104 | |
2,238 | 6,017 | |
2.5% | 2.3% | |
10.0 | 9.6 | |
6 days ago | about 14 hours ago | |
C++ | C++ | |
GNU General Public License v3.0 or later | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Qt
-
Current Issues With The Qt Project - From The Outside Looking In
Qt mono repo : .. you could check out all submodules and simply use CMake to exactly achieve this. A mono repo also means that if I only use qtbase and declarative, I would need to have all submodules in there? - No
-
Why is building a UI in Rust so hard?
For e.g. if you’re writing a framework, you need to interface with Cocoa on MacOS to draw windows, which only provides an Objective C or Swift interface. You can look at the Qt source code and see how they do it: https://github.com/qt/qtbase/tree/067b53864112c084587fa9a507eb4bde3d50a6e1/src/plugins/platforms/cocoa
-
Fish (shell) porting to Rust from C++
That's because Qt 6 wholeheartedly converted to CMake for you. (At least it is better than qmake.) In order to support this Qt has this large battery of CMake files [1]. Qt is of course a clear outlier, but you can't expect the same level of support from every other library you want. My points about "anything exotic" still stand.
- A question about how GUI libraries are written.
- Ask HN: Why is there no performant remote desktop for Mac/Linux?
-
Post-mortem of a long-standing bug in video Game Path Of Exile, which was caused by a stale pointer
I don't see any connect in https://github.com/qt/qtbase/blob/dev/src/corelib/tools/qsharedpointer_impl.h, and QPointer isn't a QObject (though I don't know if the latter is actually necessary for signal-slots). One (unreliable) way to test is to see if a QPointer fails to be nulled out when the QObject is blocked by a QSignalBlocker. Alternatively I'd set a data breakpoint on a QPointer and try it out. But I don't have the time right now.
Interestingly Qt has QPointer which nulls itself out when the target T is deleted. It's convenient when I want weak references to GUI objects (though you have to be careful to check for its presence after every time you call code which could possibly delete it, I usually call it QPointer maybe_foo). However, from my brief look at the source (link), it's implemented in terms of qsharedpointer.h-> qsharedpointer_impl.h and QtSharedPointer (not sure how it works, but there's probably overhead going on). I wonder how it works, and compares to generational indexes or Vale's generational references (link).
-
Why is 5.15.2 the last version in git?
The tag is right there: https://github.com/qt/qtbase/tree/v5.15.4-lts-lgpl
-
[Weekly] What is everybody working on? Share your progress, discoveries, tips and tricks!
Today I'm looking in to how the MSVC Development builds work. Yesterday I downloaded a version labeled 20220527 and from what I can tell, after looking at the source (another 3gb of disk space gone for now) https://github.com/qt/qtbase/commit/5d8f815e101da3ae9cd6a666cc097853f52b21da is the current commit.
JUCE
-
Modern C++ Programming Course
You can definitely start putting C++ into your embedded projects, and get familiar with things in an environment in which you're already operating. A lot of great C++ code can be found with motivated use of, for example, the platformio tooling, such that you can see for yourself some existing C++ In Embedded scenarios.
In general, also, I have found that it is wise to learn C++ socially - i.e. participate in Open Source projects, as you learn/study/contribute/assist other C++ developers, on a semi-regular basis.
I've learned a lot about what I would call "decent C++ code" (i.e. shipping to tens of thousands, if not hundreds of thousands of customers) from such projects. I would suggest finding an open source C++ project, aligned with your interests, and study the codebase - as well as the repo history (i.e. gource) - to get a productive, relatively effortless (if the interests align) boost into the subject.
(My particular favourite project is the JUCE Audio library: https://juce.com/ .. one of many hundreds of great projects out there from which one can also glean modern C++ practices..)
- Ardour 8.0 released
-
How have you used coding in your setup?
Here's a link to their website: https://juce.com/
-
Anyone here have experience writing VST audio plugins in C++, or 'wrapping'/converting a VST to an AU plug-in?
It seems like most audio plug-ins are built in C++ inside an audio coding program called JUCE, so maybe if I could open up the exisiting code inside that and then output it as an AU instead of a VST that could work.
-
Ask HN: What audio/sound-related OSS projects can I contribute to?
JUCE:
Tracktion:
Both very powerful audio frameworks - JUCE does plugins and audio drivers and low-level DSP, oh my - and Tracktion does all the stuff a DAW needs, on top of JUCE.
There are tons of ways to contribute, from building open source samples, to testing, or even adding functionality. Both dev teams are open to good quality PR's being submitted and both frameworks have excellent communities that will get you started: http://forum.juce.com/
These are cross-platform tools which offer Audio developers an extremely powerful toolset. By contributing to either (or both) frameworks you will be massively contributing to the audio world - so many plugins use JUCE these days!
- Recommendation for professional open source project where we can learn best practices, contribute and improve coding knowledge simply by looking at the code?
-
Leveraging Rust and the GPU to render user interfaces at 120 FPS
> Juce has a CoreGraphicsMetalLayerRenderer which I believe uses Metal to render CoreGrapghics primitives.
This class is part of a JUCE demo app, and you can read the source code to it if you want. [0] It uses CoreGraphics to render the graphics on the CPU, and then uploads it as a texture to the GPU so it can be used as a CAMetal layer. So, no, the graphics are still rendered on the CPU, with compositing being handled on the GPU.
> For example, I heard that UE4->UE5 removed the GPU tesselation support
I know it's confusing, but GPU tessellation is a completely different thing. The word "tessellation" in graphics means "turn into triangles". In a 2D graphics context, we're turning splines and curves and 2D shapes into triangles. In a 3D graphics context, GPU tessellation refers to a control cage mesh which is adaptively subdivided. These two have nothing in common except that triangles come out the other side. I am not aware of anyone who has tried to use GPU tessellation to render 2D graphics.
GPU tessellation failed for a large number of reasons, but slow performance was one of them. So, you know, doing this sort of work efficiently on the GPU is still an open research problem. Just because it's not efficient to do it on the GPU does not mean the performance overhead is negligible. For rendering big complex vector graphics, tess overhead can easily outweigh rasterization overhead.
[0] https://github.com/juce-framework/JUCE/blob/4e68af7fde8a0a64...
When we talk about 2D graphics as a research problem, we're talking about native rendering of splines and strokes. JUCE does not have GPU-accelerated splines, it flattens the path to lines and rasterizes the coverage area into a texture.
https://github.com/juce-framework/JUCE/blob/2b16c1b94c90d0db...
https://github.com/juce-framework/JUCE/blob/2b16c1b94c90d0db...
It also does stroke handling on the CPU:
https://github.com/juce-framework/JUCE/blob/2b16c1b94c90d0db...
Basically, this isn't really "GPU accelerated splines". It's a CPU coverage rasterizer with composting handled by the GPU.
You linked to the compatibility-renderer. But JUCE also has platform-specific rendering modules.
CoreGraphicsContext::createPath will convert the CPU spline segments to CG spline segments which are then rasterized by CoreGraphics using Metal on the GPU.
https://github.com/juce-framework/JUCE/blob/2b16c1b94c90d0db...
-
BlinderKitten, A free lighting software without restriction
Sure.
The device definitions come as GDTF files, see the spec and other projects that utilize GDTF here [1]
Juce framework [2]
OrganicUI [3]
What are some alternatives?
Boost - Super-project for modularized Boost
OpenFrameworks - openFrameworks is a community-developed cross platform toolkit for creative coding in C++.
iPlug2 - C++ Audio Plug-in Framework for desktop, mobile and web
Cinder - Cinder is a community-developed, free and open source library for professional-quality creative coding in C++.
imgui - Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies
audiogridder - DSP servers using general purpose computers and networks
Folly - An open-source C++ library developed and used at Facebook.
Vcpkg - C++ Library Manager for Windows, Linux, and MacOS
abseil-cpp - Abseil Common Libraries (C++)