아직 c언어 배우고있는 늅임

cui말고 gui관심있어서 여러 정보 찾아봤는데

win api, mfc, DirectX 이것들이 윈도우즈에서
대표적으로 gui관련 작업들이 가능하다고 들었는데
win api가 gui작업의 기본 함수가 있다고 하고
mfc는 win api 가 복잡하고 어려운 부분이 있기에
그것을 더 쉽게만들어놓은거라는데

앞에 두개는 알겠는데
DirectX 는 정확히 이해가 안됨

하드웨어(그래픽카드)에 직접 접근해서
연산을 시키고 하드웨어 종류가 달라서
프로그래밍시 번번이 테스트할 필요가 없다는데

여기서 질문

그렇다면 앞에 두개(win api, mfc)는
하드웨어(그래픽카드)에 접근이 불가능함?
그러면 아예 그래픽작업은 cpu가 다 처리함?

그리고 DirectX 가 하드웨어마다 직접 테스트할 수고를
덜어준다는데 이게 정확히 무슨말임?
원래는 하드웨어마다 데이터처리 방식이 달라서
테스트가 필요한거임? 그래서 마이크로소프트가
이런 문제를 해결할려고 그래픽카드사들한테
DirectX의 데이터처리방식에 맞게 제조지원을
해준거임?

누가 정확한 히스토리좀 알려주셈