In SteamOS go to Settings / Intefrace and check "Enable access to the Linux desktop" option.
Click on Exit, choose "Return to Desktop".
Open terminal and set password so sudo can work:
passwd
Orthodox C++ (sometimes referred as C+) is minimal subset of C++ that improves C, but avoids all unnecessary things from so called Modern C++. It's exactly opposite of what Modern C++ suppose to be.
Other day on Twitter I ran into some retweets about "10x programmers" by some people who are not known for their coding, but rather complaining on Twitter. Since I followed them before I know partially their work history, or more like their brief stints, at different well known game tech companies.
This made me think about recent phenomenon of programmers who seem to be working on games with existing codebases their whole career, without significant contribution to any of those code bases, but who are very vocal and opinionated about things in those code bases.
Some traits of Yelp programmers are:
After over 20 years working with C/C++ I finally got clear idea how header files need to be organized. Most of the projects in C++ world simply dump everything in .h file, and most of my C++ code was organized this way. Lately I started to separate function declaration from implementation as it was done in C. Now .h
headers are exclusevely intended for function and class declaration with doxygen documentation style comments. Inline implementation of functions, class method implementation, etc. goes into .inl
headers or .cpp
files.
For example .h
file would contain only declaration and doxygen style documentation comment:
/// Convert size in bytes to human readable string.
void prettify(char* _out, int32_t _max, uint64_t _value)
Before you continue, if you don't know what IMGUI is don't bother reading this post, just ignore it, don't write anything in comments section, etc. If you're curious about IMGUI see bottom of this post, otherwise continue whatever you were doing, this post it's not for you. Thanks!
If you know what IMGUI is, for context read following presentations and blog posts:
Context:
https://web.archive.org/web/20180705002109/https://pplux.github.io/why_px_render.html
bgfx records render commands in global variables (or thread local variables), making impossible to use a task-based scheduler if you want to split your render between different tasks that might be executed from different threads.
bgfx does support submission from multiple threads via bgfx::Encoder interface:
bgfx main API is using basic C++ that looks like C, but it's C++ enough that can't be used directly in C projects. C is important as it provides ability to bind API to other languages, and also as sanity check for API design.
Every time API changes manual process of process for adding/changing API for C99 bindings was changing header declarations of function and function type for interface virtual table (I'll use bgfx::createVertexBuffer
function as an example):
/* ... bunch of funcs ... */
/**/
BGFX_C_API bgfx_vertex_buffer_handle_t bgfx_create_vertex_buffer(