rendering order

nobond

Newcomer
Let say the application put a few tri inside one draw call. I mean flush the buffer only once. I assume the actual rendering order of these triangle is not defined?
In theory different GPU could have different order of rendering? If the application really want to rely on the order, they have to split them into seperate draw calls?
 
Actually, the rendering order within a draw call is perfectly well-defined; the OpenGL/Direct3D APIs require the GPU to behave as if each polygon is completely rendered before starting on the next one, and also dictate a specific order for the polygons to be rendered in. In the OpenGL specification, you can find a very detailed description of the entire order in chapter 2; IIRC, the ordering is basically identical in Direct3D as well.

A GPU may of course deviate from this ordering internally - as long as such deviation does not produce observable changes anywhere.
 
You mean this?

Commands are always processed in the order in which they are received, although
there may be an indeterminate delay before the effects of a command are
realized. This means, for example, that one primitive must be drawn completely
before any subsequent one can affect the framebuffer. It also means that queries
and pixel read operations return state consistent with complete execution of all
previously invoked GL commands, except where explicitly specified otherwise. In
general, the effects of a GL command on either GL modes or the framebuffer must
be complete before any subsequent command can have any such effects.
 
Back
Top