Не учебник, но как насчет примера кода? К сожалению, он использует «конвейер фиксированных функций», а не новый подход «делай все с шейдерами», но мне нравится думать, что код понятен.
http://darksleep.com/oObjLoader/
Кроме того, я должен отметить, что он использует VBO, а не прямой рендеринг или отображение списков, поэтому он довольно эффективен.