If you're diving into shader programming for the first time, start with OpenGL 2.0 / GLSL 1.20. It strips away compute shaders and indirect draws, leaving only the elegant core: vertices, fragments, and the code that connects them. Then, when you move to OpenGL 4.6 or Vulkan, you'll recognize every shader-based concept as a direct descendant of the revolution that began in 2004. Keywords: OpenGL 20, OpenGL 2.0, GLSL, programmable shaders, fixed-function pipeline, graphics API history, legacy OpenGL, shader tutorial
Even Vulkan (2016) – which is a thin, low-overhead API – still requires the developer to think in terms of vertex shader invocations and fragment shader outputs, a conceptual inheritance from OpenGL 2.0. If you search "OpenGL 20" expecting the latest version, you'll find a two-decade-old standard. But that standard changed computer graphics forever. OpenGL 2.0 democratized GPU programming. It took shaders from the domain of a few engine architects to every graphics programmer. opengl 20
#version 110 varying vec3 v_color; void main() gl_FragColor = vec4(v_color, 1.0); If you're diving into shader programming for the
OpenGL 2.0 let Windows, Linux, and macOS (via Apple's implementation) compete with DirectX 9.0c's shader model 3.0. OpenGL 2.0 vs. DirectX 9: The Shader Wars OpenGL 2.0 arrived later than DirectX 9 (late 2002), but it offered cleaner abstraction: Keywords: OpenGL 20, OpenGL 2
| Feature | OpenGL 2.0 | DirectX 9.0c | | --- | --- | --- | | Shader Language | GLSL (cross-vendor) | HLSL (Microsoft, but cross-compiled) | | Pipeline layout | Explicit state machine | COM objects (more OOP) | | Vertex shader max instructions | Unlimited (dependent on driver) | 512-1024 slots | | Fragment shader precision | Full floating-point (FP32) | Optional FP24/FP32 |