|
|
|
|
|
by nh2
2609 days ago
|
|
You can also do some simple math to arrive at a justification: Assume a 4k x 2k display at 60 FPS. Compute the throughput needed (Bytes per second) to draw an RGB framebuffer. That is: 8M pixels x 3 Bytes x 60 fps = 1.44 GB/s Note how we haven't done any computation yet to decide what the colours should be, this is just the CPU effort to do IO to tell the GPU about the new colours to show. This would incur significant CPU usage, and your device would get hot quickly. In contrast, if you let the GPU scroll, you have to send two floats (for X and Y offset) per frame, and the GPU just does a hardware-parallelised lookup. This is why we have GPUs, and why scrolling immediate-mode would make your device burning hot while a GPU does the task with minimal energy usage. |
|
Two floats? You are using a memory that is a CPU memory, a big chunk of memory. That does not exist in the GPU. In the GPU the memory is distributed so it can be used in parallel.
Immediate GUI exist because of GPUs, because with GPUs you can draw frames fast. If you look at Imgui code it uses GPU drawing for everything. In fact it uses only two drawing functions copying small rectangles in the screen.
It is drawing a single big chunk of memory what is extremely slow, and you need to do that before you do offsetting.
And if you work with variable data, like a treeview, you need to allocate for a finite amount of memory in the GPU buffers.