Game Development Stack Exchange is a question and answer site for professional and independent game developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm looking for some good learning resources for graphics hardware (and associated low level software). Basically I want to learn more about what goes on underneath the opengl/direcx API layers in terms of how things are implemented.

I familiar with what happens in principle during the various stages of the rendering pipeline (viewing, projection, clipping, rasterization etc).

My goal is to be able to make better and more informed decisions about tradeoffs and potential optimisations when graphics/shader programming with respect to the following kinds of issues;

  • batching
  • view culling
  • occlusions
  • draw order
  • avoiding state changes
  • triangles vs pointsprites
  • texture sampling
  • etc

Basically whatever the graphics programmer needs to know about modern graphics hardware in order to become more effective.

I'm not really looking for specific optimisation techniques, rather I need more general knowledge so that I will naturally write more efficient code.

share|improve this question
Batching has less to do with hardware and more to do with APIs. State changes are similar, as is viewport culling, "triangles vs pointsprites", etc. – Nicol Bolas Nov 24 '12 at 4:50
up vote 5 down vote accepted

Fabian Giesen's series of blog posts A Trip through the Graphics Pipeline is the best place I know of to get an under-the-hood view of how modern GPUs work, and what APIs like D3D and OpenGL are really doing for you.

share|improve this answer
I've read the first two articles in this series. Looks like it might be exactly what I need. – Ken Nov 27 '12 at 21:45

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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