7 posts tagged with "C++"

  • 04 Apr 2023/ GameDev

    Game Engine Series: First steps with Vulkan

    As we’ve discussed in the previous article, our game engine is going to use the modern Vulkan graphics API. In this part of the Voxel Game Series, we’re going to initialize the Vulkan Subsystem. Base Code

  • 07 Feb 2023/ GameDev

    Game Engine Series: Rendering Overview

    One of the first tasks in our game engine will be to actually draw something on the screen. We call this process rendering. In this initial article we’re going to take a look at the high-level architecture we’re going to build. In the next articles in the series we’re actually getting started building it. The moving parts of 3D rendering Let’s start from the beginning. In this context, rendering is the process of converting 3D models into 2D images. Typically, we represent our models as a list…

  • 12 Jan 2023/ GameDev

    Game Engine Series: A Basic Logger

    In this part of the Voxel Game Series we’re going to talk about logging. Logging is a vital part of any software project, and the same is true for a game engine. Logging allows you to quickly check the state of your systems, trace variables and more. A quick history of logging Logging exists as long as programming does. It just means to print some programmer-defined strings whenever a certain event happens: void foo() { std::cout << "Doing foo()"; try { bar();…

  • 11 Jan 2023/ GameDev

    How to write a game engine from scratch

    In this article series we’re going to write a small game engine for a voxel minecraft-esque game. We’re going to use Vulkan, Khronos’s successor to the cross-platform OpenGL APIs. These articles are meant to primarily target Microsoft Windows, I will point out platform-specific code, so that people on Linux should be able to follow along as well.

  • 14 Jun 2022/ C++

    Doing syscalls by hand

    In this blog post we’re going to take a stab at implementing syscalls by hand. There really is no advantage doing this, it’s just fun to learn the intrinsics of Linux; we’re going to discuss user- and kernel space and finally get our hands dirty with some assembly. What are syscalls? If you’ve ever written a program, chances are that you have already used…

  • 28 Mar 2022/ C++

    A utility class for multi-dimensional operator[]

    Sometimes you have data-structures that are multi-dimensional in nature. A classic example might be a matrix or a cube. Alas, there’s no built-in way in the language to deal with multi dimensional array-like access. In this blog post we’re going to develop a little utility class that you can use for exactly that.

  • 03 Oct 2021/ C++

    Using enum classes as bitmasks

    This is just a quick tip on making enum classes a little bit cooler in C++. Consider the following code: enum class MyBitField: uint16_t { eFoo = 1 << 1, eBar = 1 << 2, eBaz = 1 << 3, //... and so on } //Fails to compile! auto fooAndBar1 = MyBitField::eFoo | MyBitField::eBar; //Compiles, but contains *a lot* of noise. auto fooAndBar2 = static_cast<uint16_t>(MyBitField::eFoo)…

All tags