There isn't a single blog/site out there that shows how graphics technologies evolved over time, how and why they became what they're now. If anyone can shed some light on it, it would be great.

See, back in late 80s, Logo/Turtle was awesome enough to blow my mind off. I was 6 yrs old and it seriously seemed like out-of-the-world to me. Then somewhere in late 90s with on-chip FPU, Pentium, MMX I came across VESA and I was happy pushing pixels with INT 10h. I even went so far as to create a rudimentary stacked windowing system just for fun (which was bad at clipping though). By the turn of millennium I started hearing Sci-Fi words like OpenGL, DirectX, NVIDIA and I couldn't follow these technologies any more. My high-school math didn't prepare me for that. And that was the end of it.

Lately, I decided, I'll give one last try and went about installing libSDL. To my surprise, there's way more technologies than I can barely make sense of. I kid you not!

$ sudo apt-get install libsdl2-dev

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libasound2-dev libdbus-1-dev libdrm-dev libegl1-mesa-dev libgl1-mesa-dev libgles2-mesa-dev libglib2.0-dev libglu1-mesa-dev
  libice-dev libmirclient-dev libmircommon-dev libmircookie-dev libmircookie2 libmircore-dev libprotobuf-dev libpthread-stubs0-dev
  libpulse-dev libsdl2-2.0-0 libsm-dev libsndio-dev libsndio6.1 libudev-dev libwayland-bin libwayland-dev libx11-dev libx11-xcb-dev
  libxau-dev libxcb-dri2-0-dev libxcb-dri3-dev libxcb-glx0-dev libxcb-present-dev libxcb-randr0-dev libxcb-render0-dev
  libxcb-shape0-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb1-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev
  libxfixes-dev libxi-dev libxinerama-dev libxkbcommon-dev libxrandr-dev libxrender-dev libxshmfence-dev libxss-dev libxt-dev
  libxv-dev libxxf86vm-dev mesa-common-dev x11proto-core-dev x11proto-damage-dev x11proto-dri2-dev x11proto-fixes-dev
  x11proto-gl-dev x11proto-input-dev x11proto-kb-dev x11proto-randr-dev x11proto-render-dev x11proto-scrnsaver-dev
  x11proto-video-dev x11proto-xext-dev x11proto-xf86vidmode-dev x11proto-xinerama-dev xorg-sgml-doctools xtrans-dev

I know some are related to D-Bus and U-dev and possibly unrelated to this question. But what I don't understand is how the rest of these technologies fit in.

Learning how they evolved over time would help me understand how all these technologies form the ecosystem that they work in. As a side effect, it will also help me appreciate the complex nature of the libraries and the underlying hardware. Hence the question.

  • The main change over time was the movement from CPU rendering to dedicated hardware rendering (graphics cards), and the corresponding push for standard APIs on such hardware. For 3D graphics tremendous changes have occurred, but much of the complexity is optimization. The real complexity of light reflections in nature is still heavily simplified to obtain real time performance. – Frank Hileman May 1 '18 at 1:09
  • This is a subject that one could write an entire book about. (In fact, someone has!) As such, it's probably too broad for this site. – user1118321 May 1 '18 at 6:02

An academic overview could be found by reading SIGGRAPH papers in chronological order.

But really the long list of technologies just highlights that graphics programming has become an extremely large subject. I'm not sure that chronological order helps much. There are various 3D tutorials out there, and websites to help like Shadertoy. And breakdowns of individual game engines, such as this analysis of a frame from DOOM.

(Much of your long list just reflects a quirk of the Ubuntu/Debian world of shipping complex systems like X11 as a lot of little fragments. Mir and Wayland are alternatives to X11. Mesa and the various GL libraries are there to handle 3D.)

Not the answer you're looking for? Browse other questions tagged or ask your own question.