Recently I've been aggravated at the stupidity involved in graphic apis. We're all aware of OpenGL's attempt at removing all fixed functionality in favor of a programmable pipeline; however who's inane idea was it to get rid of immediate mode? Now it takes three times as much code to setup a single quadrant, and involves the use of a shader. I'm told that the 'new and improved' api is suppose to be heaps more efficient and well tailored for modern day GPUs. Excuse me how is three times the code and the use of a shader more efficient then plotting a GL_QUAD.
With the ongoing efforts of maintaing code, people have resorted to using rendering abstraction libraries like the one used in the clutter project cogl3d, while some are forced to write their own. Consider a situation where I would like to draw a quadrant for systems whos GPUs are incapable of shader programs, what are my options?
Forget about platforms that are old and stop providing support:
I like to support older hardware, only because it expands my user base allowing me to recieve positive feedback and create a reputation that dignifies who I'm and what I'm capable of.
Write individual implementations for individual systems:
While this may work and provide everything I want as a developer, it is a waste, hard to maintain and it's easy to break your legacy functionality when you implement new functionaility.
Write one implementation in OpenGL 2.x and use that:
While in actuality this is a decent method, there is situations where
I would like to take advantage of shaders to provide enhanced visuals, for systems that have the capability to do so.
With that said my options are absoloutly none so I'm forced to pick one, in the end my perfered method of choice is stick to OpenGL 2.x. While this may have serious fallbacks in the future as you would expect, atleast the documentation for OpenGL 2.x is not limited like the new 4.1 specification, and at least I have my quads.