High performance graphics and text rendering on the GPU for C++

Speaker: Barbara Geller, Ansel Sermersheim

Audience level: Intermediate | Advanced

Drawing an image or displaying text on the screen is accomplished by a process called rendering. Typically a text based application renders using the CPU while 3D games make heavy use of GPU rendering. It would be ideal if applications were able to render graphics and text using hardware acceleration on the GPU. Is this practical, feasible, or realistic?

In this presentation we will provide a brief introduction to graphics terminology, differences between OpenGL, Direct3D, Vulkan, and Metal, and an overview of the rendering process. We will explain what obstacles developers encounter using a Graphics API and then present a  practical alternative.

Several examples will be shown to illustrate the exact steps required to configure and render using a specific Graphics API. Since this is a daunting and overwhelming task strategies to streamline the process will be demonstrated.

As part of this talk we will explain why rendering text is more complicated than just drawing letters on the screen. There is a difference between text shaping and font rasterization which matters if you want your application to be readable on all platforms. We will briefly go over the pros and cons of platform native text rendering.

A key part of the talk will introduce the idea of reusable and composable graphics buffers which can reduce the load on the rendering hardware. This approach provides an efficient way to render graphics.

A brief overview of shaders, pipelines, and textures will be shown to illustrate the power of graphics, even for a general purpose GUI application.