C++ Ecosystem in Windows and Linux- Graphics Rendering Focused
Published:
(work in progress…)
Due to the faster computation, C++ is still (2026) the best choice for real-time rendering and Python is far behind in this real-time performance race. C++ is a powerful language with different excellent features, some are the latest version-dependent as well. Nonetheless, over the years, I have noticed, some of the commonly used C++ features used in graphics rendering are, Pointer and References (the smart pointer might be helpful to reduce data leak), STL, Type Casting, Vecot and Matrix Operations, etc. These are some of the frequently used features.
Someone working (or interested working in Graphics Rendering) may already have profound knowledge of the language. Besides, I might recommend some of the excellent learning resources, viz. Learncpp, CPP Reference, MS C++ documentation, MS C++ Blog, CppCoreGuidelines, cpp different versions’ features cheatsheets, isocpp, cppcon, helped me understanding the language. However, learning by actually coding is the best way in my opinion. There are several git projects for C++, e.g., Bjarne Stroustrup’s Github repository, 30-seconds-of-cpp, cppbestpractices, project-based-learning.
Naming convention for a C++ project may vary company to company, even among different developers’ team. The google C++ style guide is a popular choice. Besides, someone can check C++ Best Practice, similar to Boost Style and C++ Coding standard. The Hungarian Notation was once a popular choice as well.
Documentation is essential for understanding the gist of the code in the quickest possible time. Unfortunately, in my experience, this is the part where the development team often pay the least attention. Doxygen is being used for long time for documentation purposes.
A robust package manager system is important for developers to maintain the standard and open-source libraries, especially to maintain the appropriate version. Unlike Linux, Microsoft OS does not have a central package management system. However, VCPKG does the job, and suitable with CMake. It is cross platform. Other than VCPKG, there are some other package manager, e.g., Conan, Hunter also popular.
The success of graphics rendering remains in efficiently debug and profiling, both CPU and GPU side. Other than someone using the Visual Studio, or Visual Studio Code, or any other IDE, there are a bunch of online compilers, e.g., Compiler Explorer, online gdb, C++ Shell, wandbox, Coliru useful sometime. For online benchmark, you can check quick-bench, perfbench, buildbench, CPP Insights- what compiler sees. Moreover, these off-line tools code analyzer: lizard 1.17.9-lizard 1.17.9, coverage code: Gcov is a source code coverage analysis and statement-by-statement profiling tool are also handy. Besides, for the GPU side profiling there is a whole bunch of tools, e.g., PIX, NVidia Nsights, etc (will write an in-depth article on this topic in future)
Linux Specific
Resources
Future of C++
Probably, Rust (👍🏽), Lua, Nim, Zig, C3, Golang/Go, Dart, Carbon could be name as the Successors of C++ language.
