GLのマトリクスAPIは重いという以前に仕様がウンコすぎるかと。
あれが使いやすいって奴はただのマゾだろ。
 あと、個人的にウンコ臭が漂ってるのはglEnable/glDiableだな。
DirectXなら

pDevice->SetRenderState( D3DRS_ALPHABLENDENABLE , material->alphablend );

で済むところがOpenGLだと

if( material->alphablend ){
glEnable( GL_BLEND );
} else {
glDisable( GL_BLEND );
}

と泥臭い事になる。まぁこれは好き好きかな、とは思うけど。
でも、OpenGLで一番最悪なのはpbufferだな。仕様考えた奴、脳みそどうか
してるんじゃないかと思う。