3 ms·
Your usage of these terms in completely unconventional and wacky. > You need to draw the whole frame every frame This isn’t even true at a high level. You can
by epcoa 3y ago
Your usage of these terms in completely unconventional and wacky.
> You need to draw the whole frame every frame
This isn’t even true at a high level. You can composite buffers. That’s not exotic. That’s a fundamental operation.
But insofar as needing to actually do all your draw calls at once - that is literally what "immediate" in immediate mode means.
> Vulkan and OpenGL
They don’t specifically retain state - they’re immediate. That’s what immediate mode means. What something higher up does has nothing to do with it.
What would you even consider immediate mode by your definition?
> so you need to retain the state of everything in the frame so you can draw it.
That state can be a procedure and a handful of variables (which in the extreme is all a shader). The point is Vulkan and OpenGL have no say over the nature of that state.
- ahartmetz 3y agoOK, so sorry, I was misusing the terms. I guess I'm looking at it from a GUI application programmer POV. That OpenGL or Vulkan are, themselves, immediate mode, doesn't matter all that much there. Drawing happens on the GPU, which wants to process large buffers without changing its state in between. An overview of all drawing operations (scene graph, proper use of the term retained mode) with batching and merging is needed to cater to that. Examples: Qt QML scene graph, GTK4 GSK > You can composite buffers Compositing buffers is still drawing, though > What would I consider immediate mode? Basically, a canvas-type thing. You just scribble wherever whenever (limited by convention and correctness, of course) and what you don't touch stays like it is. Drawing happens on the CPU, which is fairly happy to do small operations at the drop of a hat. No need to remember any state for the benefit of the graphics API. Examples: Qt QPainter, GTK < 4 using Cairo