OpenGL보다 Direct3D를 선호하는 이유가 있습니까?


11

그래서 나는 이것을 읽고 있었는데 , 다른 OS보다 Microsoft Windows에 더 많은 게임이있는 이유가 있습니다. 제시된 주요 문제는 Direct3D가 OpenGL보다 선호된다는 것입니다.

내가 이해하지 못하는 것은 개발자가 호환성을 희생하는 이유는 무엇입니까? 그것은 단순히 회사의 재정적 손실입니다. OpenGL은 엉망이지만 전문가에게는 거의 문제가되지 않습니다. 그럼에도 불구하고 사람들은 재정적 손실을 입는 것보다 더 많은 마일을 갈 것이라고 생각합니다.

또한 내가 틀리지 않으면 많은 크로스 플랫폼 응용 프로그램이 Direct3D와 OpenGL을 모두 사용합니다. API 간을 전환한다고 생각합니다.

OpenGL을 사용할 수 있기 때문에 이상합니다. 왜 Direct3D에 관심이 있습니까?

문제는 OpenGL에 기술적 인 문제가 있거나 OpenGL이 부족한 Direct3D가 제공하는 지원이 있습니까?


나는이 질문이 주제가 맞지 않거나 너무 광범위하여 닫힐 수 있음을 알고 있으며, 좁히기 위해 최선을 다했습니다.


이것 과 다른 것을 찾고 있습니까?
trichoplax

2
BTW, 나는 몇 년 전에 GameDev.SE대해 비슷한 질문에 대답 했습니다 .
Nathan Reed

1
여기에 당신의 질문에 답하는 역사의 좋은 교훈이 있습니다 : programmers.stackexchange.com/questions/60544/…
darius

1
@NathanReed "따라서 Windows에서 OpenGL을 사용하는 다중 플랫폼 개발자로 돌아갈 수 있습니다." 그리고 지금, 3 년 후, 이것이 일어났다 고 말할 수 있습니까?
Rotem

2
@Rotem 나는 그렇게 생각하지 않습니다. 오늘날 OGL (및 현재 Vulkan)은 D3D와 기능 패리티를 유지하는 것이 낫지 만 AFAICT는 GPU 공급 업체가 여전히 버그 수정 및 성능 개선을 위해 D3D 드라이버의 우선 순위를 정하며 대부분의 게임 / 엔진은 여전히 ​​Windows에서 기본적으로 D3D를 사용합니다. Windows에서 OGL을 사용 하는 idTech 엔진 은 예외입니다 .
Nathan Reed

답변:


9

Windows 용 게임이 더 있다는 사실에 대해 몇 가지 이유는 다음과 같습니다.

  1. Windows는 시장의 대부분을 차지하고 있으며 과거에는 크로스 플랫폼 게임 개발이 오늘날보다 더 복잡했습니다.
  2. DirectX에는 더 나은 개발 도구 (예 : 디버깅)가 제공됩니다.
  3. 큰 혁신은 일반적으로 DirectX에서 먼저 생성 / 구현 된 다음 OpenGL로 이식 / 구현됩니다.
  4. Windows와 Linux의 경우 마케팅 및 역사적 이유로 실제 표준이있을 때 ( 게임 개발자가 Windows를 선호하는 이유는 무엇입니까? | 소프트웨어 엔지니어링 , 의견에서 언급했듯이) 관성이 있습니다. .

관성 문제는 매우 중요합니다. 팀이 시장의 90 %를 목표로 DirectX를 위해 개발한다면 (물론, PC에서 게임을한다면, 아마도 시장의 99 %일까요?) 왜 OpenGL에 투자하고 싶습니까? OpenGL에서 이미 개발하고 시장의 99 %를 다시 목표로 할 경우 가능한 한 오래 지속될 것입니다. 예를 들어 Id Software의 Id Tech는 OpenGL을 사용하는 우수한 게임 엔진 (DOOM 시리즈를 구동)입니다.

토론 주제, 의견에 대해.

현재로서는 많은 API가 있으며 일반적인 관행은 API를 추상화하는 게임 엔진을 사용하는 것입니다. 예를 들어

  • 대부분의 모바일 플랫폼에서는 OpenGl ES를 사용해야합니다.
  • PC에서는 DirectX와 OpenGL을 모두 사용할 수 있습니다
  • XBOX에서는 DirectX를 사용해야한다고 생각합니다.
  • PS에서는 자체 API를 사용한다고 생각합니다.
  • 오래된 하드웨어에서는 DirectX9 또는 OpenGL 3 또는 OpenGL ES 2를 사용합니다.
  • 최신 하드웨어를 사용하면 DirectX 11, OpenGL 4, OpenGL ES 3을 사용할 수 있습니다.

최근 새로운 낮은 오버 헤드 API가 등장하면서 그래픽 프로그래밍의 주요 전환점이되었습니다. Windows 및 XBox 용 DirectX 12, iOS 용 Metal 및 Windows 및 Linux 용 Vulkan (새로운 OpenGL)이 있습니다 (Android 및 Tizen 포함). ).

여전히 Windows와 XBOX만을 대상으로하는 게임이 있지만 오늘날 IMHO는 마케팅 선택 만 할 수 있습니다.


따라서 Direct3D를 선호하는 성능상의 이유는 없습니다.
A --- B

@ritwik sinha DirectX 11은 OpenGL 4보다 멀티 스레딩 렌더링을 더 잘 지원하지만 성능상의 차이는 없었습니다. 반면, Windows를 DirectX 11과 Linux를 비교하고 OpenGL 4를 사용하는 Linux를 비교하면 Linux가 OpenGL을 사용했습니다. DirectX 12 vs Vulkan에 관해서는 너무 이른 것이라 생각하지만 모르겠습니다.
다리우스

Direct3D를 사용한 적이 없으므로 멀티 스레딩의 의미를 이해하지 못합니다. 내가 아는 한 다른 스레드는 프로그래머가 다른 작업을 처리합니다. Direct3D는 이것을 후드 아래에서 수행합니까? 어쨌든 좋은 대답.
A --- B

1
@ritwik sinha 실시간 그래픽에 멀티 스레딩을 적용하는 것은 백그라운드 스레드 (텍스처 스트리밍, 버텍스 버퍼)에 다른 스레드를 사용하여 resoruce를 할당 할 수 있다는 것입니다. 이것은 OpenGL에서도 가능하지만 매우 까다 롭습니다. DirectX 11에서는 많은 스레드에서 그리기 호출을 수행 할 수 있으므로 성능이 향상되지만 일반적인 방법은 아닙니다. UnrealEngine4의 마지막 릴리스가 그렇게 생각합니다. 그러나 DirectX 12 및 Vulkan 멀티 스레딩 렌더링은 실제로 중요합니다.
다리우스

1

몇 가지 가능한 이유 :

  • 역사적으로 OpenGL 드라이버 품질은 많이 변했지만 더 이상은 확실하지 않습니다.
  • Xbox는 D3D를 지원하므로 PC와 PC간에 게임을 쉽게 포팅 할 수 있습니다.
  • D3D의 디버깅 도구는 OpenGL보다 낫습니다. 다행히도 이제 RenderDoc이 있습니다
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.