본문 바로가기

Papyrus/Dizzy Report

Two Major Graphics Systems : DirectX / OpenGL

현재 가장 중요한 그래픽 시스템은 단연 MS의 DirectX와 크로노스 그룹의 OpenGL이다. 사실, 이 두 그래픽 시스템은 두 번의 통합 기회가 있었는데 모두 무산되었다. DirectX가 초창기 조악한 모습을 벗어나지 못하던 시절, 존 카멕과 같은 게임 개발자들을 위주로 OpenGL을 윈도우의 공식 3D 그래픽 라이브러리로 채택해달라는 요청이 있었지만 MS는 이를 받아들이지 않았다. 그리고 이와 별도로, 고성능 워크스테이션 시장에서 산업계의 표준처럼 쓰이던 OpenGL과, 일반 데스크탑 시장에서 사실상의 표준인 윈도우의 DirectX를 통합하려는 움직임이 있었다. 이것의 결과물로 MS와 OpenGL을 주도적으로 개발하던 SGI는 파렌화이트(Farenhait)라는 프로젝트를 발족하게 되는데, 이들의 통합 작업은 지지부진하더니 결국 둘은 제 갈 길을 가게 된다. 초창기 DirectX는 OpenGL에 비해 모든 것이 압도적으로 불리했으며, 결과적으로 본다면 MS는 이 통합 프로젝트를 전략적으로 이용했다는 느낌이 든다.

이것은 MS 방침 중 하나인, '자신의 운명을 남에게 맡기지 말라'를 보여주는 좋은 사례라고 할 수 있다. MS로서는 자신의 생명줄인 윈도우에, 다른 이의 시스템을 핵심 모듈로 넣는다는 것은 달갑지 않았을 것이다. DirectX는 초기의 쓸모없던 코드에서 8.1, 9.0을 거쳐 최고의 그래픽 시스템 중 하나로 거듭났고, OpenGL은 그 특성상 쉐이더가 강력하게 부상하던 시절 표준화에 늦어져 경쟁에서 조금 밀린 감이 있는데, 이를 보면 독자적으로 강력한 그래픽 시스템을 가지겠다는 MS의 방침이 크게 잘못된 것 같지는 않다. 여튼, 모든 것이 그렇듯이 경쟁 관계에 있던 두 그래픽 시스템은 서로 상이한 출발점에서 시작했지만, 서로 주거니 받거니 영향을 미치며 발전해오고 있다.

DirectX와 OpenGL 중 무엇이 더 나은가하는 논쟁은 진부하고 시간 낭비일 뿐이다. 두 그래픽 시스템이 각자 필요에 따라, 그리고 플랫폼과 개발 집단의 성향에 따라 조금씩 다른 모습을 보이는 것은 사실이다. 즉, DirectX의 경우, MS 독자적으로 개발하는 것이기 때문에 최신 기술에 보다 빨리 대응할 수 있지만, 플랫폼이 윈도우로 제한되는 것과 새로운 버전이 나올 때마다 아키텍처가 크게 바뀌는 것은 부담스럽다. 반대로, OpenGL은 DirectX가 COM 기술에 의존하는 것과 달리 C 기반이며,  API가 안정적이다. OpenGL 1.0 스펙이 공개된 뒤 인터페이스가 크게 변한 것은 없는데, 3.0 스펙에 이르러서야 대대적인 리팩토링이 있었을 뿐이다. 이것은 OpenGL이 아주 깔끔하게 설계되었다는 것을 의미한다. 지금 관점에서 보더라도, OpenGL의 인터페이스는 대단히 잘 설계되어 있다. 이런 점은 그래픽 시스템을 처음 접하는 사람에게 매우 좋은 소식이다. 하지만, OpenGL의 스펙에 변화를 주려면 ARB의 승인 과정을 거쳐야 하므로, 아무래도 최신 기술에 대응이 느릴 수 밖에 없다.

양 진영은 각각 자신의 그래픽 시스템으로 천하 통일을 꿈 꿨지만, 지난 10년간의 처절한 전쟁은 그것은 몽상에 불과했다는 것을 깨닫게 해주었다. 물론, 공정하게 말하면 DirectX가 조금 더 앞서긴 했지만 그것도 위에서 말한 한계를 극복하지 못했으며, 덕분에 각 그래픽 시스템이 장악하고 있는 영역은 어찌할 수 없다는 것만 증명한 것이라 할 수 있다. DirectX는 '질풍 노도의 변화기'를 거쳐, 9.0 이후에는 그럭저럭 안정화 단계에 들어서고 있으며, OpenGL은 컨소시엄이라는 느슨한 형태에서, 크로노스 그룹이라는 보다 유기적인 형태로 빠르게 최신 기술에 대응하는 형태로 바뀌었다. 그러나, DirectX가 아무리 성능이나 품질 면에서 OpenGL을 압도한다고 하더라도 다양한 플랫폼에서 고품질의 결과를 얻을 수 있다는 OpenGL의 장점을 넘어서지 못할 것이며, 반대로 OpenGL의 성능이 아무리 뛰어나더라도 플랫폼 자체와 유기적으로 결합될 수 있는 DirectX의 장점을 넘어서기는 힘들다. 크로노스 그룹은 GL만 아니라 다양한 플랫폼을 통합하여 하나의 단일한 솔루션을 제공하려고 노력하고 있지만, 윈도우와 DirectX의 통합도에 미치지 못한다.

즉, 하이엔드 사용자라면 DirectX나 OpenGL 무엇이든 상관없다. 두 그래픽 시스템은 미래에도 살아남을 것이며, 각자 차지하고 있는 영역이 확실하기 때문이다. 그리고 개발자라면 두 플랫폼을 모두 아우를 수 있는 시야를 갖추는 것이 좋다. DirectX는, 9.0 이래로 변화의 속도가 늦추어지기는 했지만, 여전히 그 폭은 큰 편이기 때문에 전체적인 모습을 그리는데 복잡함을 겪는 경우가 많다. 이럴 때 OpenGL의 안정적인 아키텍처는 DirectX를 살펴보는데 길잡이 역할을 해줄 수도 있다. 반대로, OpenGL은 상대적으로 벤더들의 지원이 DirectX만큼 빠르지 않기 때문에 최신 기술을 적용하는데 조금 답답함을 느낄 수도 있지만, 안정적인 인터페이스 덕분에 쉽게 좋은 방법론의 적용이 가능하다는 장점을 갖는다.