그래픽스 API 선택하기

강좌번역 2015. 9. 6. 22:16 by 빠재

원문: http://rastertek.com/choosing.html

여러분 중 대다수의 사람들이 그래픽스 API를 학습하여 자신만의 2D 또는 3D 그래픽스 엔진을 만들기 위해 이 사이트를 방문하고 있습니다. 하지만 최근 새로이 많은 API들이 릴리즈되고 있기 때문에 어느 것을 사용해야 할 지 망설여집니다. 특히 어떤 API는 전문가를 위해 만들어지기 때문에 더욱 그러합니다. 하나의 API를 배우는 것조차 매우 힘든 일이기 때문에 배우려고 하는 사람은 최대한 시간을 버리지 않고 최선의 선택을 하기를 바랍니다. 그래서 제가 여러분이 최선의 선택을 할 수 있도록 아래에 작은 가이드를 작성해 봤습니다.

DirectX 12

DirectX 12는 전문가를 위한 API입니다. 이것은 오로지 DirectX 11을 마스터했고 이에 더해 빠른 성능을 위해 더 낮은 수준의 렌더링 파이프라인 제어를 하기 원하는 사람들을 위한 것입니다. DirectX 12를 배우려는 사람은 보통 이미 상당한 수준의 DirectX 11엔진을 만든 경험이 있고 이쪽 지식이 해박한 경우입니다. 여러분이 이런 경우에 해당하지 않는다면 다른 API를 배우는 것을 권장합니다.

DirectX 12의 목적은 그래픽스의 실행 흐름을 병렬화하여 여러분이 원하는 대로 GPU가 효율적으로 동작하도록 하는 것입니다. 하지만 이렇게 하기 위해서는 DirectX 11에서는 한줄에 처리되는 정도의 간단한 작업에도 많은 양의 코드를 작성해야 합니다.

DirectX 11

DirectX 11은 현재 업계를 주도하고 있는 그래픽스 API입니다. DirectX 12가 있음에도 마이크로소프트가 DirectX 11.3을 릴리즈한 것을 보면 대부분의 사람들은 DirectX 12가 제공하는 저수준의 제어가 필요하지 않다는 것을 알 수 있습니다. 또한 DirectX 11은 DirectX 12와 같은 기능들을 제공하고 있습니다. 레퍼런스 또한 DirectX 11에 집중하는 다른 많은 웹사이트 및 포럼들을 찾을 수 있을 것입니다.

DirectX 10

DirectX 10은 최근까지 3D 그래픽스 프로그래밍을 배우기 위한 최고의 그래픽스 API였습니다. 오늘날 이 API의 유일한 단점은 하드웨어 테셀레이션을 지원하지 않는다는 것이지만 그다지 중요한 사안은 아닙니다. 이 API는 최신 하드웨어의 지원을 확대하고 더 나은 설계가 되기 위해 바닥에서부터 새로 만들어졌습니다. API가 잘 구조화되도록 설계된 덕에 3D 그래픽스 프로그래밍을 배우기에 매우 좋아졌습니다. 이 설계는 DirectX 11에도 적용되었습니다.

DirectX 9 및 그 하위 버전

DirectX 9는 아마 DirectX API들 가운데 가장 긴 사용 기간을 가진 놈일 것입니다. 이 API는 2002년에서부터 2011년 사람들이 DirectX 11로 옮겨가기 시작할 때까지 선호되었습니다. 이 때문에 인터넷에서 여러분은 엄청난 양의 자료들을 찾을 수 있을 것입니다. 하지만 DirectX 10이나 11처럼 잘 조직된 API가 아니기 때문에 최신 하드웨어를 지원하는 데 있어 제약 사항이 있습니다. 따라서 배우는 사람의 입장에서 이런 오래된 DirectX API들은 그다지 추천하지 않습니다.

Vulkan

벌칸은 크로노스 그룹에서 개발하고 있는 최신의 크로스플랫폼 그래픽스 API입니다. DirectX 12와 마찬가지로 이 역시 전문가들을 위한 API입니다. 이것은 DirectX 12에서 제안한 모든 기능을 가지고 있으며 똑같이 프로그래밍하기 어렵습니다. 초심자가 다루기에는 적절하지 않습니다. 만약 크로스 플랫폼 API에 관심이 있다면 OpenGL 4부터 시작하는 것이 좋을 것입니다.

OpenGL 4

OpenGL 4는 기능이나 최신 하드웨어 지원이라는 면에서 보면 DirectX 11과 동일한 API입니다. 하지만 이 API의 가장 큰 장점은 크로스 플랫폼 API라는 것입니다. 만약 여러분이 리눅스와 같은 운영체제를 위한 개발을 하고 있다면 하드웨어 가속을 지원하기 위한 유일한 선택이 될 것입니다. 그리고 OpenGL 4와 그 이전 버전은 사용하거나 배우기에 그렇게 복잡하지 않기 때문에 크로스 플랫폼 그래픽스 개발이라면 가장 먼저 이것을 배우기를 권장합니다.

OpenGL 3 및 그 하위 버전

OpenGL 3.3은 크로스 플랫폼을 지원하는 DirectX 10과 같습니다. 물론 이 API가 매우 쓸모있고 널리 사용된다고는 하지만 (많은 자료도 포함해서) 저는 OpenGL 4를 배우는 것을 권장합니다. 이 두 API를 비교해 보면 둘이 거의 다르지 않기 때문에 최신 버전을 배우는 것이 더 합리적이지 않을까요.

Mantle

맨틀 역시 AMD에서 만들어진 전문가용 API입니다. 이것이 가장 처음 만들어진 저수준으로 GPU를 제어하는 API였고 이를 기점으로 마이크로소프트와 크로노스 그룹이 각각 자신들의 저레벨 API를 만들게 되었습니다. 하지만 이것은 AMD 하드웨어만 지원하기 때문에 Nvidia가 지배하는 시장에서는 매우 제한이 많았습니다. 개인적으로는 누가 되었건 이 API를 배워야 할 가치가 있다고 생각하지 않습니다.

Rastertek 웹사이트 - 예전 튜토리얼들

여러분은 이 Rastertek 웹사이트에서 대부분의 튜토리얼들이 historical 영역에 있는 것을 보게 될 것입니다. 대부분의 것들은 마이크로소프트에서 DirectX SDK를 없애고 Windows SDK로 대체했기 때문에 컴파일되지 않을 것입니다. 또한 이제는 사용되지 않는 수학 라이브러리를 사용한 튜토리얼들 역시 컴파일되지 않을 것입니다.

하지만 예전 튜토리얼이라도 다루는 내용의 가치가 떨어지는 것은 아니기 때문에 여러분은 일부분의 코드를 Windows SDK로 옮겨 사용할 수 있을 것입니다. 또한 DirectX 10, 11 시즌2 튜토리얼에서 새로운 라이브러리를 사용하는 방법들을 찾을 수 있습니다. 두번째 시즌은 튜토리얼 수는 적지만 예전 튜토리얼들이 동작하도록 수정할 수 있는 방법들이 나와 있습니다.

'강좌번역' 카테고리의 다른 글

[번역] 톤 매핑  (2) 2022.02.11
[번역] 자동 노출  (0) 2022.02.11
(번역) Cassandra와 MongoDB 비교  (0) 2022.02.02
물리 개체의 PID제어  (0) 2018.10.17
Nav