Graphics driver and Hardware related Best-Practices

Images and Color formats

Best practice for image drawing:

Bitmaps that contain transparent areas

<Origin>

drawing-7-1743143867.png

<Improved version>

drawing-7-1743143901.png

Bitmap size difference: 102312 ⇔ 49728!

Modify bitmaps with large transparent areas ("U" shape)

drawing-7-1743401243.png

<Origin>

drawing-7-1743144245.png

<Improved version>

drawing-7-1743144200.png

Bitmap size difference: 701568 ⇔ 188904 (55296 + 87528 + 46080)!

Modify bitmaps with large transparent areas (Gauge)

<Origin>

drawing-7-1743144331.png


<Improved version>

drawing-7-1743144366.png

Size difference: 925848 ⇔ 438588 (180940 + 61376 + 196272)!

Single-colored bitmaps

For single-colored bitmaps use BitmapBrushColorBlend and use an alpha only color format e.g. A8 or A4. If further size reduction is required there are also compressed formats but those prohibit scaling and rotation on all types of LBO render targets.

<Origin>

drawing-7-1743144462.png

<Improved version>

drawing-7-1743144481.png

Visual result:

drawing-7-1743401263.png

size reduction: RGBA: 222028 ⇔ 74092!


Combine Bitmaps

Bitmaps can be combined to one bitmap at design time. E.g., tube, scale, and numbers should already be combined if possible.

drawing-7-1743401290.png


Reduce number of objects from 5 to 2. Avoid rendering of non-translatable static text. Only one moving object left and maybe the gauge itself can be put into a background image.

<Origin>

drawing-7-1743144715.png

<Improved version>

drawing-7-1743144740.png

Bitmap size reduction: 1383508 (1000000 + 347508 + 36000) ⇔ 1154000 (1118000 + 36000)!


Compressed image formats

Best practice:


Usage of Bitmap profiles

There are many different bitmap formats available for Traveo2. The goal is always to use a format which uses least memory as possible. The drawback is that some formats have restrictions regarding transformation (rotation, scaling, …).
Best practice is to use RLE formats to reduce memory size. AX (A1, A2, …) formats are used to reduce memory further if just recoloring is needed (white or grayish bitmaps can be recolored in CGI Studio).
If a channel (RGBA) has less than 8 bits you will have a lossy compression.
For special use cases there are formats which can dither bitmaps (Nq, Mc, Nq_FsDithered, Mc_FsDithered. Based on the look and feel on the target, usually different formats of such type must be tested to decide what to use.

drawing-7-1742365920.png

Transformations

Best practice Scaling and Rotation:

drawing-7-1742366036.png

The red gauge should be the required size. The green scale is too big and must be scaled down by to 80%.

drawing-7-1742366072.png

Needed size of gauge will be 925848

<Origin>

drawing-7-1742366119.png

<Improved version>

drawing-7-1742366164.png

Bitmap size comparison: 1449642 ⇔ 925848!

Using Layers

In general, there is always a tradeoff between performance (incl. memory band-with) and memory consumption (e.g., VRAM). Traveo II allows, with the new introduced “Layer-modes” IBO, LBO and OTF, to steer in one of these directions.
Traveo II supports (like Cypress Amber) a huge amount of “separated” Layers, up to 5 “Main-Windows”, 3 of the windows can be split up to 8 sub-windows.
Large area screens shall always be split up to several sub screens to save VRAM consumption.

drawing-7-1742368976.png
Layer types

SurfaceFormat optimization

Before starting the project, it must be decided which format could match the expectations of a customer. If less bits per pixel are sufficient for the look and feel it should be chosen to save VRAM. Keep in mind that for overlapping Layers/RenderTargets an Alpha-value is necessary, otherwise no blending of layers is possible.

drawing-7-1742369423.png

Text

Best practice for drawing text related content:


Revision #7
Created 2025-03-19 04:50:25 UTC by Kanai Tomoaki
Updated 2025-04-17 21:45:22 UTC by Kanai Tomoaki