물론 저자의 실력 차도 감안해야 하지만...

OpenGL과 D3D11과의 구조적인 차이가 존재함.

OpenGL의 경우 1.0때부터 현재의 4.3때까지 API가 변경된 적이 없음.

그러다 보니까 1.0과 호환성을 가지기 위해서 암시적으로 지정된 파이프라인 각 단계의 기본값들이 존재함.

그러니까 그런 파이프라인 단계의 모든 세팅을 할 필요가 없음.

튜토리얼도 그러니까 일단 필요한 부분만 코드를 작성하면 됨.


D3D의 경우 D3D9까지는 OpenGL처럼 사용자가 지정하지 않아도 파이프라인 각 단계의 기본값들이 존재했음.

심지어 고정 파이프라인도 존재해서 필요하면 픽셀셰이더나 버텍스셰이더만 지정할 수 있었음.


그런데 그러다 보니까 오버헤드가 상당히 컸고, 마이크로소프트사가 오버헤드를 줄이면서 최대한 추상화를 이루고자 했음.

그런 결과로 D3D10부터는 고정 파이프라인도 제거되고, 파이프라인 각 단계를 일종의 객체로 취급하도록 만들고 (D3D12에서 보자면)디스크립터힙에 채워 넣어야 할 것들 또한 객체로 만들었음.(SRV, UAV, RTV. CBV는 Buffer의 용도에 ConstantBuffer용으로 따로 취급함)


그러니까 D3D11가 D3D12보다 쉽다고는 하나, 초기화를 할 때 각 파이프라인 단계에 맞는 객체를 생성하는 코드가 추가됨.

그래서 튜토리얼의 난이도가 달라진다고 생각함.


틀렸을 수도 있고, 그러면 보충하는 덧글 부탁함