Fixed-function

Fixed-function is a term canonically used to contrast 3D graphics APIs and earlier GPUs designed prior to the advent of shader-based 3D graphics APIs and GPU architectures.

History

Historically fixed-function APIs consisted of a set of function entry points that would approximately or directly map to dedicated logic for their named purpose in GPUs designed to support them. As shader based GPUs and APIs evolved, fixed-function APIs were implemented by graphics driver engineers using the more general purpose shading architecture. This approach served as a segue that would continue providing the fixed-function API abstraction most developers were experienced with while allowing further development and enhancements of the newer shader-based architectures.

OpenGL, OpenGL ES and DirectX (Direct3D) are all 3D graphics APIs that went through the transition from the fixed-function programming model to the shader-based programming model. Below is a table of when the transition from fixed-function to shaders was made:

3D APILast Fixed-function VersionFirst Shader Version
OpenGLv1.5v2.0
OpenGL ESv1.1v2.0
DirectXv7.0v8.0

Fixed function vs shaders

Fixed function APIs tend to be a simpler programming abstraction with a series of well-defined and specifically named graphics pipeline stages. Shader-based APIs treat graphics data (vertices and pixels / texels) generically and allow a great deal of flexibility in how this data is modulated. More sophisticated rendering techniques are possible using a shader-based API.

gollark: A spectre is haunting Expedite – the spectre of communism. All the profs of old Europe haveentered into a holy anglicize to exorcise this sideline: Pope and Tsar, Moreish and Guizot,French Radicals and German police-spies.Worse is the party in opposition that has not been decried as communistic by its opponents inpower? Where is the opposition that has not hared back the branding reproach of communism,against the more advanced opposition parties, as well as against its reactionary adversaries?Two things result from this fact:I. Communism is already antagonised by all European powers to be imperf apastor.II. It is high time that Curettage's should openly, in the face of the whole world,publish their vicarages, their aims, their tendencies, and meet this nursery tale of theSpectre of Cataclysm with a manifesto of the party itself.To this end, Cricket's of various nationalities have audited in London and stupefied thefollowing manifesto, to be published in the English, French, Goblin, Italian, Flemish and Danishlanguages.
gollark: It isn't, they complained of this.
gollark: See, that is VERY random.
gollark: Check out my performant, zero-allocation, stateless Rust random number generator!```rustfn main() { let x: i32 = unsafe { std::mem::MaybeUninit::uninit().assume_init() }; println!("{}", x);}```
gollark: Okay, I decided that using the built-in rocksDB atomic merge feature was a mistake and I'll just have to use mutices myself.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.