1, 2, and 4 are the three options. It's not 1, 2, and 3 because it's easier to represent in binary for the computer.
1: 0001
2: 0010
4: 0100
So basically, the least-significant (rightmost) bit represents "managed", the next (to the left) is "dynamic", and the third is "scratch".
If it used 3, you'd end up with:
3: 0011
...which would mean both managed AND dynamic, which doesn't make sense, since they're mutually exclusive.
You'll find functions that take parameters like this all the time, for example, CreateWindow.
As for an in-depth technical explanation, I don't know... I do know that factors to consider are whether the image is stored in video RAM or system RAM. That would make certain operation faster or slower because of bus latency, etc.
My suggestion would be to ask yourself what category your image falls under according to the docs, then use the appropriate flag. Most often, the default is the right one to use.
1: 0001
2: 0010
4: 0100
So basically, the least-significant (rightmost) bit represents "managed", the next (to the left) is "dynamic", and the third is "scratch".
If it used 3, you'd end up with:
3: 0011
...which would mean both managed AND dynamic, which doesn't make sense, since they're mutually exclusive.
You'll find functions that take parameters like this all the time, for example, CreateWindow.
As for an in-depth technical explanation, I don't know... I do know that factors to consider are whether the image is stored in video RAM or system RAM. That would make certain operation faster or slower because of bus latency, etc.
My suggestion would be to ask yourself what category your image falls under according to the docs, then use the appropriate flag. Most often, the default is the right one to use.