How does Font Rendering Work? | Game Engine Concepts #1

Channel:
Subscribers:
59,400
Published on ● Video Link: https://www.youtube.com/watch?v=MvNqNYLhXkY



Duration: 17:54
21,921 views
0


Join the Discord: https://discord.gg/4tHeAkxNg7

How does font rendering work in OpenGL (or DirectX, or Vulkan, etc)? What are the best techniques? Should you go with signed distance field rendering, font bitmap generation, or use the .ttf mathematical notation in the GPU? I attempt to answer these questions in this tutorial, giving a high-level overview of the simplest way to achieve font rendering (and efficient). I also touch on how to achieve more complex techniques to render fonts with greater fidelity, and have some articles and papers linked below to help aid you in that regard.

Links to My Java Implementation
FontTexture: https://github.com/ambrosiogabe/UntitledDungeonCrawler/blob/master/src/main/java/com/jade/renderer/fonts/FontTexture.java
CharInfo: https://github.com/ambrosiogabe/UntitledDungeonCrawler/blob/master/src/main/java/com/jade/renderer/fonts/CharInfo.java
FontRenderer: https://github.com/ambrosiogabe/UntitledDungeonCrawler/blob/master/src/main/java/com/jade/components/FontRenderer.java (This is only here for reference I really don't like the way this class is coded, however I will udpate it with a better implementation once I get around to it :) ).

Articles & Papers
Generating Fonts in Java: https://lwjglgamedev.gitbooks.io/3d-game-development-with-lwjgl/content/chapter12/chapter12.html
STB_Truetype: https://github.com/nothings/stb/blob/master/stb_truetype.h
Stack Overflow: https://stackoverflow.com/questions/5262951/what-is-state-of-the-art-for-text-rendering-in-opengl-as-of-version-4-1
Valve's Paper on SDF: https://steamcdn-a.akamaihd.net/apps/valve/2007/SIGGRAPH2007_AlphaTestedMagnification.pdf
Will Dobbie on Vector Textures: http://wdobbie.com/post/gpu-text-rendering-with-vector-textures/
Rendering of General Vector Graphics: http://hhoppe.com/ravg.pdf

---------------------------------------------------------------------
Website: https://ambrosiogabe.github.io/
Github: https://github.com/ambrosiogabe

Here are some books I recommend if you want to learn about game engine development more thoroughly. I do not profit off any of these sales, these are just some books that have helped me out :)

My Recommended Game Engine Books:
Game Engine Architecture: https://www.gameenginebook.com/
Game Physics Cookbook (Read this before the next physics book): https://www.amazon.com/Game-Physics-Cookbook-Gabor-Szauer/dp/1787123669
Game Physics (Ian Millington): https://www.amazon.com/Game-Physics-Engine-Development-Commercial-Grade/dp/0123819768
Game Programming Patterns (Free): https://gameprogrammingpatterns.com/

My Recommended Beginning Game Programming Books:
JavaScript Game Design: https://www.apress.com/gp/book/9781430247166

My Recommended Java Books:
Data Structures/Algorithms: https://www.amazon.com/Data-Structures-Algorithms-Java-6th-ebook/dp/B00JDRQF8C
LWJGL (Free, but I haven't read this thoroughly): https://lwjglgamedev.gitbooks.io/3d-game-development-with-lwjgl/content/

Outro Music: https://www.bensound.com/royalty-free-music




Other Videos By GamesWithGabe


2020-09-26Enabling Mouse Picking and Code Maintenance | Coding a 2D Game Engine in Java #32
2020-09-25The State Pattern | Game Engine Concepts #4
2020-09-19Pixel PERFECT Mouse Picking | Coding a 2D Game Engine in Java #31
2020-09-16The Command Pattern: Coding Undo/Redo | Game Engine Concepts #3
2020-09-12Collision Manifolds (Circle v Circle) | Coding a 2D Physics Engine in Java #14
2020-09-085 YEARS of Game Development | From no Programming Knowledge to this
2020-09-05Mouse Screen Coordinates to Game Viewport Coordinates | Coding a 2D Game Engine in Java #30
2020-09-02How to Debug OpenGL Programs? (Non-zero exit code status, uh oh) | Game Engine Concepts #2
2020-08-30Engine Workflow & Picking | Cocoa Engine Devlog #12
2020-08-29Adding a Game Viewport | Coding a 2D Game Engine in Java #29
2020-08-26How does Font Rendering Work? | Game Engine Concepts #1
2020-08-22Particle Physics and Forces | Coding a 2D Physics Engine in Java #13
2020-08-19Channel Update | GamesWithGabe
2020-08-14ImGui Docking in Java LWJGL | Coding a 2D Game Engine in Java #28
2020-08-12Force Generators (Abstracting Forces) | Coding a 2D Physics Engine in Java #12
2020-08-02Gizmos and Asset Management | Cocoa Engine Devlog #11
2020-07-31Framebuffers in OpenGL | Coding a 2D Game Engine in Java #27
2020-07-28Separating Axis Theorem EXPLAINED | Coding a 2D Physics Engine in Java #11
2020-07-24Debug Drawing Boxes and Circles | Coding a 2D Game Engine in Java #26
2020-07-23Why C++ Scares the Crap Out of Me
2020-07-22Circle vs Shape Collision Detection | Coding a 2D Physics Engine in Java #10



Tags:
gameswithgabe
games with gabe
lwjgl3
font rendering
truetype font
stb truetype
font rendering opengl
signed distance field
signed distance field rendering
how to do font rendering
how to
java game engine
game engine concepts
game engine
how to code a game engine
lwjgl
java