GLM
CppCoreGuidelines
Our great sponsors
GLM | CppCoreGuidelines | |
---|---|---|
36 | 306 | |
8,653 | 41,446 | |
1.7% | 0.8% | |
9.0 | 7.6 | |
1 day ago | 3 days ago | |
C++ | Python | |
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.
GLM
- C++23: The Next C++ Standard
- Which is the best way to work with matrices and linear algebra using c++?
-
Best C++ Game Framework
I would also recommend GLM
- PocketPy: A Lightweight(~5000 LOC) Python Implementation in C++17
-
Learning DirectX 12 in 2023
Alongside MiniEngine, you’ll want to look into the DirectX Toolkit. This is a set of utilities by Microsoft that simplify graphics and game development. It contains libraries like DirectXMesh for parsing and optimizing meshes for DX12, or DirectXMath which handles 3D math operations like the OpenGL library glm. It also has utilities for gamepad input or sprite fonts. You can see a list of the headers here to get an idea of the features. You’ll definitely want to include this in your project if you don’t want to think about a lot of these solved problems (and don’t have to worry about cross-platform support).
-
Viking Math! A Vulkan-Focused 3D Math Library In Pure Go
You may recall vkngwrapper, which I posted several months ago, a Vulkan wrapper for go. Well, here is the second step in my plan to take over the world: a vulkan-friendly 3d math library for go. It's the only right-handed 3d math library I'm aware of in Go, and it is faster than the alternatives, by a lot in some cases. It's mostly a straight go port of key elements of GLM (https://github.com/g-truc/glm) and there's a lot more I could probably put in, but I'll keep it how it is for a bit while I work on other stuff.
-
What are some cool modern libraries you enjoy using?
even though it's fairly old and buggy, I haven't found anything as easy to use or complete as glm
-
I've decided to learn Godot and it feels like I have "lost"
math library because you should never implement a math library yourself, and you probably want somethign more focused on performance than STL. GLM may work if you just need basic vector support. Eigen may help for a more physics heavy game. But I'd probably find something in-between those two
-
Eigen: A C++ template library for linear algebra
glm is also good for 3d math. It mimics the API of OpenGL shaders, so it's a good option if you already know (or are interested in learning) how to write shaders.
-
Is there a reference of C/C++ implementations of basic vector/matrix routines used by common MATLAB functions?
If you want 3D maths only (so up to 4x4) GLM https://github.com/g-truc/glm is perfect.
CppCoreGuidelines
- Learn Modern C++
-
Modern C++ Programming Course
You need to talk to Bjarne and Herb...
"C++ Core Guidelines" - https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines
- CLion Nova Explodes onto the C and C++ Development Scene
-
Toward a TypeScript for C++"
In addition to the other comments -
TypeScript deliberately takes a "good enough" approach to improving JavaScript, instead of designing an ideal but incompatible approach. For example, its handling of [function parameter bivariance](https://www.typescriptlang.org/docs/handbook/type-compatibil...) is unsound but works much better with the existing JavaScript ecosystem. By contrast, a more academic functional programming language would guarantee a sound type system but would be a huge shift from JavaScript.
By analogy, Herb Sutter is arguing that something like the [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines), with tooling help in this new Cpp2 syntax, can bring real improvements to safety. Something like Rust's borrow checker would bring much stricter guarantees, backed by academic research and careful design, but would be incompatible and a huge adjustment.
-
C++ is everywhere, but noone really talks about it. What are people's thoughts?
Another phenomenal resource is the ISO C++ core guidelines which is essentially a giant list of best practices of newer c++ features. These guidelines were a collaborative effort started by Bjarne Stroustrup who know a bit about c++. There is an entire section about resource management if you're interested in learning more about the newer facilities c++ offers in that regard to avoid the footguns, but there is a ton of other great information in there as well.
Take a look at Effective Modern c++ by Scott Meyers and the ISO c++ core guidelines. These resources are great for learning how to write better, more modern C++. I don't think it would be hard to grasp if you're already familiar with the language, just make sure to actually write some code which makes use of this stuff, otherwise it's easy to forget.
-
What are some C++ specific antipatterns that might be missed by C#/Java devs?
Look to the C++ Core Guidelines. It's not perfect, it has some flaws, including some sabotaging advice apparently adopted for political reasons. But at least it has some C++ authorities (Bjarne and Herb) as authors.
-
How to improve the code quality
Also, tried to follow https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines as much as I could.
-
Rust fact vs. fiction: 5 Insights from Google's Rust journey in 2022
C++: Not memory safe and tons of ceremonial to avoid UB and have actually well defined objects, semantically: for example, rule of five. Needs to follow a huge number of "core guidelines", https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines, many of the most important are not automatically enforceable by tools. No enum types, invisible codepaths everywhere due to exceptions. Stupid textual-inclusion compilation model meaning that you need to manually track which headers should actually be included in a file (in particular, when reviewing changes to that file that may or may not render some header inclusions useless). Namespace system where the namespace is not inferred from the file/package, but explicitly declared in the file, meaning that name collisions are possible (and result in an ill formed program, no diagnostic required. Once had to debug a colleague's ODR violation that made even valgrind segfault... very fun afternoon) and should be watched for in review. No unsafe and anything could be UB, so have to be paranoid about everything that is being done.
What are some alternatives?
Eigen
DirectXMath - DirectXMath is an all inline SIMD C++ linear algebra library for use in games and graphics apps
linmath.h - a lean linear math library, aimed at graphics programming. Supports vec3, vec4, mat4x4 and quaternions
cglm - 📽 Highly Optimized 2D / 3D Graphics Math (glm) for C
OpenBLAS - OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version.
blaze
CGal - The public CGAL repository, see the README below
GMTL - Generic Math Template Library (forked from http://ggt.sourceforge.net/)
hlslpp - Math library using hlsl syntax with SSE/NEON support
Boost.Multiprecision - Boost.Multiprecision
ExprTK - C++ Mathematical Expression Parsing And Evaluation Library https://www.partow.net/programming/exprtk/index.html
ceres-solver - A large scale non-linear optimization library