Low level graphics are hardware and OS specific. They are also ridiculously complex to optimise because both hardware and OS is pretty complex (reasons) – so in order to make it humanly possible to write graphics code extensive and well designed library layer is user. This is usually OpenGL or DirectX
From experience we know that making a picture on a digital device requires a hell of a lot of repetitive switching and shunting of data. As humans we want to deal with drawing in terms of drawing operations, not in terms of operands on binary data, because often these operations are so primitive and numerous that because we can translate one big drawing operation into 1000s of binary data operations using software we should use the software that is created for this purpose. Although it is useful to understand (in broad strokes) the theory of how this software works.