Tôi có nên tiếp tục nghiên cứu OpenGL hay chỉ chuyển sang DirectX để cho tôi cơ hội tốt hơn để tìm việc làm trong ngành công nghiệp trò chơi? [đóng cửa]


29

Tôi đã học lập trình đồ họa một thời gian rồi bằng OpenGL và Linux. Tôi khá quen thuộc với hầu hết các khái niệm, nhưng tôi thực sự muốn nâng cao kiến ​​thức của mình và cuối cùng theo đuổi sự nghiệp phát triển trò chơi, đặc biệt là phát triển công cụ trò chơi.

Cho đến nay, dường như phần lớn các studio trò chơi tạo ra các trò chơi cho Windows bằng DirectX.

Chỉnh sửa: Tôi biết rằng câu hỏi OpenGL vs DirectX đã được hỏi ở đây trước đây, nhưng tôi chưa tìm thấy câu trả lời trong viễn cảnh tôi muốn.

Chỉnh sửa 2: Sau khi đọc tất cả các phản hồi / nhận xét, tôi đã quyết định tiếp tục tìm hiểu sâu hơn về đồ họa với OpenGL / GLSL, nhưng tôi cũng sẽ cố gắng chơi xung quanh với DX, chỉ để hiểu cơ bản về API. Tôi muốn cảm ơn tất cả mọi người vì câu trả lời và cái nhìn sâu sắc mà bạn đã cho tôi.


Một phiên bản tổng quát của câu hỏi này có thể mang lại một số câu trả lời hay tại lập trình
viên.stackexchange.com

1
Về cơ bản, tôi đã được dạy về những điểm tốt hơn của các shader DX bởi một anh chàng OpenGL chưa bao giờ thực hiện HLSL. Miễn là bạn biết rằng "shader mảnh" có nghĩa là "pixel shader", các khái niệm này khá giống nhau; P
drxzcl

IIRC, DirectX đã được tạo ra một chút công bằng giống như OpenGL trong phiên bản 8 hoặc 9. Trước đó, DirectX đôi khi bị chỉ trích là khó sử dụng một cách không cần thiết. Các API vẫn khác nhau, nhưng các cách tiếp cận chung nên khá giống nhau. Tuyên bố miễn trừ trách nhiệm - Tôi cũng không phải là chuyên gia.
Steve314

@Macke - Tư vấn nghề nghiệp lạc đề @ Lập trình viên. Điều này có thể quá cụ thể nhưng các câu hỏi nghề nghiệp chung sẽ có chủ đề @ Chuyên gia vấn đề (Hiện đang được đề xuất trong khu vực 51) Hãy đi và cam kết hỗ trợ SE này
Chad

Tỷ lệ cược áp đảo là ngay cả khi bạn tham gia vào ngành, bạn sẽ không phải là một lập trình viên đồ họa và điều đó sẽ không thành vấn đề nếu bạn biết một API, cái kia, cả hai hoặc không. Ngoài ra, phụ thuộc vào công ty và dự án. D3D được sử dụng phổ biến hơn trong không gian PC, GL | ES hoàn toàn chiếm ưu thế trong không gian di động và tất cả các bảng điều khiển đều sử dụng API độc quyền mà bạn không thể tự học.
Sean Middleditch

Câu trả lời:


28

Nó thực sự không quan trọng. Các khái niệm cốt lõi là giống nhau ở cả hai, đặc biệt là bây giờ các pixel shader là chuẩn mực. Và vì hầu hết các trò chơi là đa nền tảng, có lẽ họ sẽ sử dụng một tập hợp các tính năng tương tự nhau ở cả hai ngôn ngữ. Miễn là bạn có thể viết shader bằng glsl hoặc hlsl, bạn sẽ ổn thôi.

Điều đó đang được nói, số lượng vị trí "phát triển công cụ trò chơi" là rất ít. Hầu hết các công ty sử dụng một cái gì đó ra khỏi kệ. Đối với những vị trí tồn tại, thậm chí ít hơn trong số họ là cấp nhập cảnh. Hầu hết các lập trình viên trò chơi cấp nhập cảnh không viết bất kỳ mã nào liên quan đến đồ họa (trừ các shader) vì tất cả đều bị trừu tượng hóa.


1
Những lập trình viên mới nhất làm gì? Trong các studio lớn, vừa hay nhỏ?
Quazi Irfan

Đó là một câu hỏi riêng biệt. gamedev.stackexchange.com/questions/5538/ từ
Tetrad

1
Chỉ cần thêm một câu trả lời tổng quát hơn, theo kinh nghiệm của tôi, các lập trình viên cơ sở có xu hướng bắt đầu trong trò chơi, ui, hud và làm việc từ đó, trò chơi là một điểm vào phổ biến.
JuniorDeveloper1208

Menu tích hợp tài sản và giao diện người dùng thậm chí còn là điểm nhập cảnh phổ biến hơn từ kinh nghiệm của tôi.
Coyote

Các bạn, chúng ta đừng bắt đầu một chủ đề dài về câu hỏi cụ thể đó trong các bình luận ở đây. Đó là những câu trả lời hoàn toàn tốt cho câu hỏi tôi liên kết đến.
Tết

10

Tất cả phụ thuộc vào công việc bạn muốn / sẽ nhận được. Bạn có thể nghĩ về một công việc trong thị trường PC nơi DX là vua. Chỉ cần nhớ rằng hầu hết các công ty AAA nhắm đến thị trường giao diện điều khiển nơi API khá cụ thể.

Ví dụ, PS3 có các phần mở rộng độc quyền để triển khai OpenGL ES.

OpenGL đang phát triển trong không gian di động. Hiện đã có trên tất cả các nền tảng hiện đại trừ Windows Phone 7.

Hiện tại chỉ có OpenGL ES có sẵn trong không gian này. Nhưng các chip PowerVR mạnh hơn sẽ xuất hiện với sự hỗ trợ cho OpenGL 4 và DX11.

Kỹ năng OpenGL của bạn là vàng. Bạn có thể chuyển đổi lại thành DX để có được một công việc đòi hỏi điều đó. Nhưng trong lúc này, hãy nhớ rằng OpenGL là vua về số lượng thiết bị và nền tảng có sẵn.


Chỉnh sửa : Ngoài ra, ngày càng có nhiều công ty có xu hướng sử dụng các công cụ hiện có và thường thì ngay cả các nhà phát triển trò chơi cốt lõi cũng ngày càng được sàng lọc nhiều hơn từ các API cấp thấp. Luôn có kiến ​​thức tốt về API gốc khi bạn gặp phải lỗi và hành vi lạ trên các nền tảng cụ thể. Nhưng tất cả đều thuộc về các khái niệm và như những người khác đã chỉ ra DX và OpenGL ở cốt lõi sẽ đòi hỏi kiến ​​thức về các khái niệm tương tự.


Chỉnh sửa : Vì bạn đã quen thuộc với OpenGL và có lẽ các shader bạn nên thử OpenCL ... API này có khả năng trở thành thứ lớn tiếp theo trong điện toán song song.

Tôi đang đề cập đến nó vì các hạt nhân OpenCL sử dụng kiểu dữ liệu có thể tương thích với OpenGL và rất dễ hiểu đối với các nhà phát triển OpenGL. Hãy xem xét điều đó và xem liệu bạn có thể có được một số kinh nghiệm với một giải pháp điện toán tổng quát tuyệt vời không (hiện đang được tích hợp vào vật lý đạn ).


OpenGL là một tiêu chuẩn công nghiệp, nó truyền cảm hứng cho các lib và API khác. Bạn không nên bỏ qua tầm quan trọng của nó. Nhưng mặt khác, bạn không nên dừng lại ở một điều và nếu tôi là bạn, tôi sẽ xem xét các API và công cụ cấp cao hơn trừu tượng OpenGL và DirectX.
Coyote

Tôi quen thuộc với OpenCL. Tôi đã làm việc trong một dự án phụ, xây dựng một công cụ vật lý (thô sơ, chủ yếu cho mục đích học tập) và tôi đã sử dụng một chút OpenCL để làm cho nó nhanh hơn nhưng vẫn chưa đạt được kết quả tuyệt vời (trong một số trường hợp tôi thậm chí còn làm cho nó tồi tệ hơn)
adivasile

Đó là một dấu hiệu của một sự cố gắng tốt;) Hãy xem việc thực hiện trong động cơ đạn. Nhưng dù sao, chúc may mắn với các dự án của bạn.
Coyote

7

Tôi đồng ý rằng việc bạn học API nào thực sự không quan trọng. Điều quan trọng là phải biết các khái niệm cơ bản.

Khi xem xét phát triển trò chơi, Windows không phải là nền tảng mục tiêu duy nhất. Như tôi đã nghe nói, Apple đang phát triển như một nền tảng mục tiêu, nhưng các bàn giao tiếp cũng thực sự quan trọng. Các bảng điều khiển thường có API đồ họa chuyên dụng của riêng họ (Tôi nghĩ rằng họ đang làm điều đó chỉ để làm phiền chúng tôi). Mặc dù các API bảng điều khiển có xu hướng có nhiều điểm chung với OpenGL hơn là DirectX, nhưng nó vẫn không phải là một sự khác biệt lớn.

Đi với bất cứ điều gì làm việc cho bạn.


1
XBox có thể thực hiện theo cách DirectX ...?
Macke

Có, PS3 sử dụng PSGL. Nhưng, X360 đã sử dụng DirectX như trên PC, mặc dù không chắc chắn về điều đó, chỉ là một phỏng đoán.
Quazi Irfan

Tôi chưa có kinh nghiệm về Xbox, nhưng theo Wikipedia API của nó dựa trên DirectX. Trên PS3, PSGL chỉ là một trong những API có sẵn.
mrbinary

X360 sử dụng API gần với DX9, với một vài điểm kỳ quặc để phù hợp với thực tế là nó có một lượng bộ nhớ tương đối nhỏ.
drxzcl

6

Làm thế nào về quan điểm của một giáo sư phát triển trò chơi?

Nếu bạn có kiến ​​thức cơ bản về OpenGL thì TẤT CẢ có nghĩa là dấn thân vào thế giới DirectX (lưu ý đến DX) rằng Dx9 vẫn đang được sử dụng để phát triển vì lý do tương thích, vì các nền tảng cũ hơn (cụ thể là XP) không hỗ trợ đồ họa mới hơn đường ống trong Dx10 và Dx11. (nên đọc như một đề xuất bắt đầu trong Dx9 và sau đó lưu ý sự khác biệt trong Dx10 và sau đó là 11 khi bạn tiến bộ) Điều đó cũng sẽ khiến bạn trở nên tròn trịa hơn.

Lý tưởng nhất là bạn sẽ muốn dành một chút thời gian chất lượng cho HLSL và CG (Lưu ý rằng hai ngôn ngữ đổ bóng có vẻ khác nhau này thực sự là cùng một ngôn ngữ (một được thương hiệu bởi Microsoft và một bởi Nvidia) hiểu cách hoạt động của các công cụ tạo bóng đỉnh và phân đoạn (pixel) là một tài sản lớn đối với bạn và bất kỳ công ty trò chơi nào mà bạn đi làm (giả sử rằng bạn đang làm việc trên các hệ thống kết xuất hoặc hệ thống con chứ không phải mã AI. ;-)

Ogre3D là một công cụ kết xuất mã nguồn mở hỗ trợ cả hai hệ thống con đồ họa (OpenGL / DirectX) và được sử dụng trong nhiều trò chơi ... vì nguồn này có sẵn miễn phí, bạn có thể thích tìm hiểu về nó và xem bằng cách so sánh các cuộc gọi với OpenGL khác với các cuộc gọi đến DirectX.

Tôi cũng khuyên bạn rằng vì bạn đã dành một chút thời gian cho OpenGL mà bạn đã chọc vào WebGL, có vẻ như nó sẽ nổ tung trong tương lai rất gần.

Mong rằng sẽ giúp!


Tôi sẽ không nói WebGL sẽ nổ tung trong tương lai, ít nhất là trong tương lai gần. Đây chỉ là một cách khác để hiển thị 3d trên trình duyệt mà không cần bất kỳ plugin nào.
Quazi Irfan

Với các nhà cung cấp lớn bổ sung hỗ trợ HTML5 và JS cho các sản phẩm của họ (Visual Studio) và các công ty như Adobe tung ra Edge (HTML5 sát thủ Flash Flash?) Tôi nghĩ rằng sẽ thấy nhiều nội dung dựa trên web tận dụng khả năng tăng tốc phần cứng.
Robert Pháp

4

Tôi đã đọc gần đây rằng John Carmack khuyên dùng DirectX vì thực tế đơn giản là Microsoft, trong một thời gian, đã chơi trò đuổi bắt với openGL và bằng cách đó họ đã tạo ra một sản phẩm cạnh tranh và đẩy phong bì trong khi mọi người openGL dành thời gian tranh luận và thiết kế bằng cách cho phép DirectX để trở nên bóng bẩy và, tôi đoán, dễ dàng hơn để làm việc với nhưng gắn bó với openGL.

http://www.tomshardware.com/news/john-Carmack-DirectX-OpenGL-API-Doom,12372.html

Có thể một lựa chọn khác để xem xét nếu bạn thích đồ họa nói chung và điều quan trọng là những gì đang diễn ra trong không gian nhúng.

Tôi làm việc trong không gian nhúng bằng cả Linux và WinCE. Tôi là cựu kiến ​​trúc sư của Ford SYNC (đã ở đó 6 năm) và bây giờ tôi làm việc trên CUE của GM (câu trả lời của GM cho Ford SYNC). Ford SYNC không sử dụng openGL hoặc DirectX. Thay vào đó, Ford đã chọn kịch bản Flash & Action; Những gì Flash làm dưới mui xe Tôi không chắc nhưng nó chậm như địa ngục; JD Powers đã đánh giá nó kém. CUE của GM là tất cả Linux và openGL ES và mặc dù GM CUE có bộ xử lý iMX mới hơn, hiệu suất hoạt hình trong openGL trên Linux rất đáng kinh ngạc. CUE / openGL nhanh hơn nhiều. Một lần nữa, Ford làm tê liệt hệ thống của họ bằng Adobe Flash.

Vì vậy, nếu bạn đang tìm cách làm nó trong các trò chơi nhưng lo ngại về tính cạnh tranh nhưng vẫn yêu thích loại công việc này, có thể xem các tùy chọn mở rộng hồ sơ của bạn. Theo kinh nghiệm của tôi, ít nhất là trong thế giới nhúng, WinCE dường như không sử dụng DirectX nhiều như vậy. (WinCE có API hơi khác so với NT có thể là một phần của lý do đó). OpenGL có mặt ở khắp mọi nơi trong thế giới nhúng và mọi người đang làm nhiều việc hơn như máy tính bảng, thông tin giải trí ô tô đang nóng ngay bây giờ và tất nhiên cả điện thoại thông minh ...


+1 để đề cập đến không gian nhúng. Tôi đã không nghĩ đến việc đi sâu vào đồ họa cho các hệ thống nhúng (trừ nền tảng di động), nhưng sau khi thực hiện một nghiên cứu nhỏ, tôi thấy đó là sự lựa chọn đáng để xem xét. Tôi đã có hứng thú với các nền tảng nhúng cách đây vài năm, nhưng những thứ khác đã cản trở, vì vậy tôi đã từ bỏ nó từ khá sớm.
adivasile

2

Tôi có thể nói rằng có lẽ tốt trong sơ yếu lý lịch của bạn để có thể nói rằng bạn đã làm việc với cả hai, bất kể bạn chuyên về lĩnh vực nào.

Tôi nói như vậy bởi vì, như với bất cứ điều gì, nó thiên về các kỹ thuật chung hơn là kiến ​​thức về API / cú pháp vượt quá một điểm nhất định. Bạn cần có khả năng thực hiện công cụ và biết cách của mình, nhưng bạn không cần phải triển khai những thứ khổng lồ trong cả hai API: s. (Đó là O (n * m), không chia tỷ lệ ...). Biết các API một chút và biết các kỹ thuật khác nhau (ví dụ O (n + m)) hoạt động và sẽ hữu ích.

Tất nhiên, bạn cũng sẽ ghi điểm thưởng khi thực hiện điều gì đó "nâng cao" trong DX, vì nó cho thấy bạn có kiến ​​thức API sâu hơn, nhưng bạn cần một số kỹ thuật nâng cao trong mọi trường hợp, để chứng minh rằng bạn biết cách kết nối các hộp (bỏ qua những từ ma thuật cụ thể mà bạn phải nói để hoàn thành nó).

Nó giống với bất kỳ API nào (3d hoặc cách khác), hoặc bất kỳ ngôn ngữ lập trình nào, thực sự.


1

Tôi thấy rằng DirectX khó học hơn và do đó là một kỹ năng tốt hơn. Directx thường có sự hỗ trợ tốt hơn từ các nhà sản xuất bảng, tuy nhiên, microsoft không phát hành nhiều bản cập nhật để tận dụng những tiến bộ đó (và chỉ một nhóm nhỏ các game thủ khó tính thực sự sử dụng các bảng đó). Về phát triển trò chơi, tất cả các nền tảng trò chơi chính đều sử dụng các công cụ đồ họa độc quyền của riêng họ ... xbox -> DirectX Box :) Biết các khái niệm 3D, lưới, ánh sáng, biến đổi, v.v., là một kỹ năng giống nhau cho tất cả chúng.


Tôi đã tìm thấy rất ít sự khác biệt về khái niệm giữa DX9-ish và openGl "hiện đại" (không sử dụng glBegin). Tôi sẽ đánh giá cao suy nghĩ của bạn về lý do tại sao một trong hai là "dễ hơn" hoặc "khó hơn" so với cái kia.
drxzcl

1
Tôi thực sự thấy rằng OpenGL dễ dàng hơn để nắm bắt những điều cơ bản thực sự cơ bản, nhưng ngay khi bạn chuyển sang VBO và shader, D3D trở nên dễ dàng hơn nhiều (việc thiếu các tiện ích mở rộng cũng phù hợp hơn trên cơ sở phần cứng rộng hơn).
Maximus Minimus

Đó là kinh nghiệm của tôi quá, do đó câu hỏi.
drxzcl

1

Nếu bạn biết cái này bạn có thể dễ dàng lấy cái kia.

Nếu bạn biết OpenGL, bạn có thể dễ dàng lập trình cho điện thoại thông minh (Android và iPhone) cộng với win / Linux / mac.

DirectX chỉ là Win / Xbox. Vì vậy, trừ khi bạn muốn nhắm mục tiêu Xbox, tôi muốn nói hãy ở lại với OpenGL vì nó có thể nhắm mục tiêu nhiều nền tảng hơn.


-4

Tôi thích OPENGL. Ví dụ, hãy xem xét hệ điều hành Android sử dụng OPENGL. Có rất nhiều công cụ trò chơi được phát triển dựa trên nền tảng OPENGL.

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.