Có bất kỳ lý do để thích Direct3D hơn OpenGL không?


10

Vì vậy, tôi đã đọc , tôi có lý do tại sao có nhiều trò chơi trên Microsoft windows hơn bất kỳ hệ điều hành nào khác. Vấn đề chính được trình bày là Direct3D được ưa thích hơn OpenGL.

Điều tôi không hiểu là tại sao bất kỳ nhà phát triển sẽ hy sinh tính tương thích? Đó chỉ đơn giản là một tổn thất tài chính cho công ty. Tôi hiểu rằng OpenGL là một mớ hỗn độn, nhưng đó hầu như không phải là vấn đề đối với các chuyên gia. Ngay cả nếu có, tôi nghĩ rằng mọi người sẽ đi xa hơn là chịu tổn thất tài chính.

Ngoài ra nếu tôi không sai thì nhiều ứng dụng đa nền tảng sử dụng cả Direct3D và OpenGL. Tôi nghĩ rằng họ chuyển đổi giữa các API.

Điều này thật kỳ lạ khi họ chỉ có thể sử dụng OpenGL, tại sao thậm chí quan tâm đến Direct3D?

Vì vậy, câu hỏi là, có bất kỳ vấn đề kỹ thuật nào với OpenGL hay có sự hỗ trợ nào mà Direct3D cung cấp mà OpenGL thiếu?


Tôi biết rằng câu hỏi này có thể bị đóng vì lạc đề hoặc quá rộng, tôi đã cố gắng hết sức để thu hẹp nó.


Bạn đang tìm kiếm một cái gì đó khác nhau từ điều này ?
trichoplax

2
BTW, tôi đã trả lời một câu hỏi tương tự trên GameDev.SE vài năm trước.
Nathan Reed

1
đây là một bài học hay về lịch sử sắp xếp trả lời câu hỏi của bạn: lập trình
viên.stackexchange.com /

1
@NathanReed "Vì vậy, có thể chúng ta sẽ thấy sự quay trở lại với các nhà phát triển đa nền tảng sử dụng OpenGL trên Windows." Và bây giờ, 3 năm sau, bạn có nói điều này đã xảy ra không?
Rotem

2
@Rotem Tôi không nghĩ vậy, không. OGL (và bây giờ là Vulkan) ngày nay tốt hơn trong việc duy trì tính tương đương tính năng với D3D so với trước đây, nhưng AFAICT, các nhà cung cấp GPU vẫn ưu tiên trình điều khiển D3D cho các lỗi và cải tiến hoàn hảo và hầu hết các trò chơi / công cụ vẫn sử dụng D3D theo mặc định trên Windows. Một ngoại lệ đáng chú ý là các công cụ idTech , tất cả đều sử dụng OGL trên Windows.
Nathan Reed

Câu trả lời:


9

Về thực tế là có nhiều trò chơi hơn cho Windows, một số lý do là

  1. Windows có phần lớn thị trường và trong quá khứ để phát triển các trò chơi đa nền tảng phức tạp hơn ngày nay.
  2. DirectX đi kèm với các công cụ tốt hơn để phát triển (ví dụ: gỡ lỗi)
  3. Những đổi mới lớn thường được tạo / triển khai đầu tiên trong DirectX và sau đó được chuyển sang / triển khai trong OpenGL.
  4. Đối với Windows vs Linux, bạn phải xem xét rằng khi có một tiêu chuẩn thực sự do lý do lịch sử và tiếp thị (vì vậy, tại sao các nhà phát triển trò chơi thích Windows? | Software Engineering , như tôi đã nói trong các nhận xét), nó có quán tính .

Điều quán tính là rất quan trọng. Nếu nhóm của bạn phát triển cho DirectX, nhắm mục tiêu 90% thị trường (vâng ... nếu bạn chơi trò chơi trên máy tính, bạn chắc chắn có cửa sổ, vậy ... 99% thị trường?), Tại sao bạn muốn đầu tư vào OpenGL? Nếu bạn đã phát triển trong OpenGL, một lần nữa nhắm mục tiêu 99% thị trường, bạn sẽ gắn bó với nó miễn là bạn có thể. Đối với exampe Id Tech bởi Id Software là một công cụ trò chơi tuyệt vời (cung cấp năng lượng cho dòng DOOM) sử dụng OpenGL.

Về chủ đề thảo luận của bạn, một bình luận.

Cho đến ngày nay, có rất nhiều API và một thực tế phổ biến là sử dụng Công cụ trò chơi trừu tượng hóa chúng. Ví dụ, hãy xem xét rằng

  • Trên hầu hết các nền tảng di động, bạn phải sử dụng OpenGl ES.
  • Trên PC, bạn có thể sử dụng cả DirectX và OpenGL
  • Tôi nghĩ trên XBOX bạn phải sử dụng DirectX.
  • Tôi nghĩ rằng trên PS bạn sử dụng API của riêng họ.
  • Với phần cứng cũ, bạn sử dụng DirectX9 hoặc OpenGL 3 hoặc OpenGL ES 2.
  • Với phần cứng gần đây hơn, bạn có thể (và muốn) sử dụng DirectX 11, OpenGL 4, OpenGL ES 3.

Gần đây, với sự ra đời của các API chi phí thấp mới - whch là một bước ngoặt lớn cho lập trình đồ họa - có DirectX 12 cho Windows và XBOX, Metal cho iOS và Vulkan (OpenGL mới) cho Windows và Linux (bao gồm cả Android và Tizen ).

Vẫn có những trò chơi chỉ nhắm mục tiêu Windows và XBOX, nhưng IMHO ngày nay chỉ có thể là lựa chọn tiếp thị.


Vì vậy, không có lý do hiệu suất để thích Direct3D?
A --- B

@ritwik sinha DirectX 11 hỗ trợ kết xuất đa luồng tốt hơn OpenGL 4, nhưng theo hiểu biết của tôi thì không dẫn đến bất kỳ sự khác biệt nào về hiệu năng. Mặt khác, so sánh Windows với DirectX 11 và Linux với OpenGL 4, người chiến thắng là Linux với OpenGL. Về DirectX 12 vs Vulkan, tôi nghĩ còn quá sớm để biết, nhưng tôi không biết.
darius

Tôi chưa bao giờ làm việc với Direct3D, vì vậy tôi không hiểu ý của bạn khi đa luồng. Theo tôi biết các chủ đề khác nhau được xử lý bởi các lập trình viên cho các nhiệm vụ khác nhau. Direct3D có làm điều này dưới mui xe không? Dù sao câu trả lời tốt đẹp.
A --- B

1
@ritwik sinha một ứng dụng của đa luồng cho đồ họa thời gian thực là bạn có thể sử dụng các luồng khác nhau để phân bổ các giá trị lại trong nền (phát trực tiếp kết cấu, bộ đệm đỉnh), từ chối một luồng chính thực hiện các lệnh gọi. Điều này cũng có thể có trong OpenGL, nhưng rất rất khó khăn. Trong DirectX 11, bạn cũng có thể thực hiện các cuộc gọi rút thăm, từ nhiều luồng, điều này sẽ cải thiện hiệu suất, nhưng đó không phải là một cách phổ biến. Tôi nghĩ rằng bản phát hành cuối cùng của UnrealEngine4 đã làm được điều đó. Tuy nhiên, với kết xuất đa luồng DirectX 12 và Vulkan sẽ là một vấn đề thực sự.
darius

1

Một vài lý do có thể:

  • Trong lịch sử, chất lượng trình điều khiển OpenGL đã thay đổi rất nhiều, nhưng tôi không chắc đó là trường hợp nữa.
  • Xbox hỗ trợ D3D nên việc chuyển một trò chơi giữa nó và PC trở nên dễ dàng hơn.
  • Các công cụ gỡ lỗi cho D3D đã tốt hơn so với OpenGL. May mắn thay, bây giờ chúng ta có RenderDoc
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.