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.


closed as too broad by Alexandre Vaillancourt Dec 11 '17 at 0:30

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • \$\begingroup\$ 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. \$\endgroup\$ – Nicol Bolas Nov 24 '12 at 4:50

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.

  • 1
    \$\begingroup\$ I've read the first two articles in this series. Looks like it might be exactly what I need. \$\endgroup\$ – Ken Nov 27 '12 at 21:45

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