Có lãng phí khi học OpenGL không?


13

Những gì tôi đã thu thập được trên internet và nhiều nguồn khác nhau là DirectX đã nắm bắt được rất nhiều điểm mạnh đối với miền API đồ họa. Và thành thật mà nói, tôi đã cho học hỏi DirectX10 một cơ hội, nhưng tôi không thể chịu đựng được cách mọi thứ được khởi tạo; nó thực sự rất khó để học phần 3D thực tế.

Mặt khác, OpenGL có ý nghĩa hơn nhiều từ góc độ "mã hóa" đối với tôi, nhưng tôi không chắc liệu tôi có muốn đầu tư thời gian vào thứ gì đó "sẽ không kéo dài" hay không. Tôi không theo kịp những tin tức mới nhất, cũng không biết nhiều về "cuộc chiến" đang diễn ra giữa OpenGL và DirectX. Với điều đó đang được nói, liệu OpenGL sẽ sớm biến mất? Điều tôi thích về OpenGL là có nhiều tài nguyên có sẵn hơn (cho dù thông qua sách / hướng dẫn / mẫu) so với DirectX, vì vậy nó dễ học hơn rất nhiều.

Vì vậy, đây vẫn là thời điểm tốt để tìm hiểu OpenGL hay DirectX chỉ là tương lai? Bây giờ tôi biết có 100.000 chủ đề nói về cái nào tốt hơn nhưng đó không phải là điều tôi đang hỏi. Tôi chỉ hỏi liệu OpenGL có tồn tại không.


31
Không có gì là lãng phí để học.
bát phân 9

23
Nếu bạn muốn nhắm mục tiêu BẤT CỨ điều gì không phải là Windows, bạn cần OpenGL. Điều đó bao gồm Linux, Mac OS, iPhone, Android và bất kỳ hệ điều hành bí truyền nào khác mà tôi không biết. Dù sao, điều này về cơ bản là nói 'OpenGL có tốt không so với DX', và vì vậy tôi đã bỏ phiếu để đóng là chủ quan.
Vịt Cộng sản

6
@ Vịt Cộng sản: Ngoại trừ Windows Phone 7 và Xbox 360.
DeadMG

1
Nếu HĐH WP7 là Windows kỹ thuật, thì XBOX OS là Windows kỹ thuật. (Họ không, btw.)
Olhovsky

4
Quan điểm của tôi về Direct X là quan điểm của bạn về OpenGL. Tôi không thể hiểu tại sao Direct X sẽ là tương lai theo bất kỳ cách nào. OpenGL ES / WebGL là tương lai!
Joey Green

Câu trả lời:


30

Bây giờ tôi biết có 100000 chủ đề nói về cái nào tốt hơn nhưng đó không phải là điều tôi đang hỏi, tôi chỉ hỏi liệu OpenGL sẽ tiếp tục.

Đúng.

Công nghệ không bao giờ biến mất - một khi nó đã đạt đến một số lượng quan trọng, nó sẽ tồn tại trong một thời gian dài ngay cả khi nó không bao giờ được tích cực phát triển nữa. Sẽ còn rất lâu nữa trước khi tuyên bố "thật lãng phí thời gian để học OpenGL" là sự thật.

Mặc dù tôi thấy động lực và lý luận của bạn hơi nghi ngờ, nhưng không có gì sai khi học OpenGL và nó sẽ cho phép bạn học chính xác nhiều về lý thuyết và lập trình đồ họa 3D như D3D. Thực tế, trên thực tế, có thể đáng để sử dụng nó như một phương tiện học tập ngay cả khi nó vô dụng như một nền tảng thực tế bởi vì các khái niệm cơ bản chuyển giao giữa các API, miễn là nó giúp bạn có được những khái niệm đó là một lựa chọn tốt.


Chà, nó chỉ là một thứ của dự án phụ, kết xuất địa hình là thứ khiến tôi quan tâm rất nhiều. Và thực hiện nó trong OpenGL (từ những gì tôi đã thấy) ALOT dễ hiểu hơn so với thực hiện trong DirectX

XNA là một API cho DirectX và dễ hiểu (IMO) hơn là làm việc trực tiếp với OGL hoặc DX. Các khái niệm bạn học được trong XNA sẽ chuyển sang OpenGL hoặc DirectX sau này.
Olhovsky

1
Thậm chí còn có một cổng OpenGL mã nguồn mở của XNA, MonoGame .
voithos

1
Thật buồn cười khi thế giới thay đổi. OpenGL là anh em họ nghèo của DirectX trong một thời gian dài. Sau đó, ai đó đã xoay sở để gắn GPU bên trong điện thoại và voila: OpenGL Golden Age.
MartinTeeVarga

10

Đây là một câu hỏi mà chỉ có bạn có thể trả lời thực sự. Nhưng,

  • Bạn có thực sự muốn làm một cái gì đó và tìm thấy OpenGL thú vị hơn hoặc hiệu quả hơn không? Sau đó, có thể bạn muốn học OpenGL.
  • Việc học OpenGL sẽ khiến việc học DirectX trở nên khó khăn hơn nếu bạn cần hoặc muốn? Tôi không nghĩ vậy.

Tôi không nghĩ ai có thể dự đoán cái nào sẽ dính xung quanh, tôi nói rằng hãy sử dụng bất cứ thứ gì tốt nhất cho mục đích của bạn bây giờ và bạn luôn có thể chọn cái khác sau. Tôi chỉ sử dụng DirectX, vì nó phù hợp với mục đích của tôi, nhưng nếu tôi thấy OpenGL dễ sử dụng hơn trong trò chơi của mình, tôi sẽ sử dụng nó.

Nếu bạn thích sử dụng nó hoặc hoàn thành một cái gì đó với nó, đó không phải là một sự lãng phí.


6

Open GL là nền tảng cho Web GL và trong khi Web GL vẫn còn ở giai đoạn sơ khai, nếu / khi nó trở nên phổ biến rộng rãi, nó sẽ là một điều hữu ích cần biết. Vì vậy, cùng với việc nói chung là nhiều nền tảng hơn DirectX (được đề cập trong các câu trả lời khác), cuối cùng nó sẽ là một trong những lựa chọn để tạo một trò chơi trình duyệt web 3d.

Vì vậy, để trả lời câu hỏi của bạn, giả sử webGL trở thành một tiêu chuẩn, openGL sẽ tồn tại trong một thời gian dài.


4

Không hoàn toàn vô dụng. Điều đáng nói là các hệ thống Mac vẫn chỉ hỗ trợ OpenGL và chỉ tối đa OpenGL 2.1. Điều này có nghĩa là bất kỳ trò chơi nào bạn thấy trên Mac (bao gồm một số trò chơi động cơ nguồn như Portal, Left 4 Dead, Left 4 Dead 2) đã được viết bằng OpenGL. Cho rằng Valve đã có thể điều chỉnh công cụ nguồn để sử dụng OpenGL 2.1 và thực hiện một số điều tuyệt vời với nó, có lẽ bạn khá an toàn khi bắt đầu ở đó.


Các phiên bản OSX mới hơn hỗ trợ OpenGL 3.3 . Thật không may khi Apple viết trình điều khiển riêng của họ và chỉ định các khả năng dựa trên phiên bản / phần cứng OSX, phiên bản OpenGL trên máy Mac không thể được cập nhật trừ khi bạn cập nhật toàn bộ HĐH (là bản cập nhật trả phí). Điều đó có nghĩa là các phiên bản cũ hơn của OpenGL có thể sẽ phải được hỗ trợ trong nhiều năm tới.
David C. Giám mục

3

Mã khởi tạo là một phần rất nhỏ của tất cả các mã liên quan đến một hệ thống phụ như loại trình kết xuất này. Bạn đang vứt bỏ định hướng đối tượng vượt trội và loại lợi thế đó được cung cấp bởi DirectX vì bạn không thích hai trăm dòng đầu tiên. Tôi không muốn nghe như tôi đang tầm thường hóa ý kiến ​​của bạn ở đây, nhưng thực tế là so với tất cả các mã bạn có thể viết liên quan đến bất kỳ hệ thống con kết xuất nào, không đề cập đến bất kỳ hệ thống con nào khác bạn cần, khởi tạo là một sự tầm thường.

Thứ hai, bạn luôn có thể thử DX9- nó nhiều, nhiều ít hơn DX10.


Vấn đề (đối với tôi) ít nhất là ...... dường như có rất ít thông tin / hướng dẫn có sẵn cho DX và những cái tồn tại chỉ không giải thích nó đủ tốt cho tôi. Và thông qua tất cả các khởi tạo tìm kiếm thông qua mã nguồn làm cho nó trở nên khó khăn hơn nhiều (với tôi) để hiểu thực sự những gì đang xảy ra.

Altho ... bây giờ khi bạn đề cập đến nó, có lẽ DX9 sẽ dễ dàng bắt đầu hơn.

2
Tôi không khuyên bạn nên bắt đầu với DX9. Nó không được tổ chức như DX 10 và nó sẽ biến mất.
jeffythedragonslayer

2

Không có khả năng OpenGL sẽ sớm trở thành một công nghệ được phát triển hoặc nhắm mục tiêu tích cực. So sánh các nền tảng nơi mỗi API có sẵn, D3D chủ yếu có Xbox, Windows và Windows Phone 7. OpenGL cũng sẽ hoạt động trên Windows, ngoài Mac OS X và Linux. OpenGL ES có trên Android và iOS.

Nếu bạn chỉ tìm kiếm các kỹ năng để có được một công việc được trả lương cao, có lẽ bạn sẽ cần học DX vì hầu hết các nhà phát triển trò chơi chính thống đang nhắm mục tiêu vào Windows và / hoặc Xbox. Mặc dù thị trường trò chơi di động đang mở rộng nhanh chóng đang làm tăng sự liên quan của kiến ​​thức OpenGL ES.


Đây là nhiều hơn cho một dự án vui vẻ bên cho tôi. Tôi có một công việc lập trình bình thường (phần sụn / trình điều khiển) Vì vậy, đây là phần cuối cùng của quang phổ.

2
Hầu hết các nhà phát triển trò chơi chính mà tôi biết không thực sự làm bất kỳ chương trình đồ họa nào. Tất cả các công việc được ẩn đằng sau các lớp trừu tượng đồ họa. Có thể một shader được viết ở đây và ở đó, nhưng phần lớn các tác phẩm không liên quan đến đồ họa.
Tết

1

Nếu bạn bắt đầu với lập trình đồ họa thì công nghệ rất quan trọng, nhưng nếu bạn đã quen thuộc với nó thì chỉ có các khái niệm bắt đầu quan trọng và chúng giống nhau trên Direct3D hoặc OpenGL. Vì lập trình đường ống lập trình trái ngược với đường ống chức năng cố định đang trở thành tiêu chuẩn, phần mà bạn tương tác với API đồ họa là một phần nhỏ trong tất cả công việc.

Một điều khác là, OpenGL thực sự lớn trên điện thoại di động. Nó được gọi là OpenGL ES và nó ở rất nhiều cấp độ giống hệt như OpenGL 4.1 / 4.0 / 3.3 / 3.2.


1

bạn có thể trở thành một lập trình viên trò chơi giỏi mà không cần chạm vào OpenGL hay DX. Tất cả bạn phải học là sử dụng một công cụ trò chơi tốt đúng cách như Unity. Tuy nhiên, nếu bạn muốn đạt cấp độ thấp hơn và hiểu cách thức hoạt động của công cụ trò chơi, bạn nên tìm hiểu OpenGL. bạn sẽ không đạt được nhiều thứ về mặt 'chất lượng', vì vậy nó sẽ dành cho mục đích học tập.

Vì vậy, lời khuyên của tôi là học cách sử dụng một công cụ trò chơi, có lẽ bạn sẽ làm gì trong sự nghiệp (pro hoặc indie) và cũng học một thư viện đồ họa như OpenGL cho mục đích học tập. (hoặc nếu bạn muốn tạo hoặc sửa đổi công cụ trò chơi)


1

Tôi chắc chắn rằng những người khác đã nói với bạn nhiều lý do khác nhau mà bạn nên học OpenGL và tại sao nó chắc chắn sẽ xuất hiện, nhưng đây là một lý do thay đổi trò chơi khác: Valve gần đây đã bắt đầu phát triển và hỗ trợ Linux . Điều đó có nghĩa là gì? Chà, điều đó có nghĩa là hầu hết các nhà phát triển sẽ bắt đầu sử dụng OpenGL.

Ngay cả bây giờ, OpenGL nhận được hầu hết các tính năng sớm hơn, nó được hỗ trợ trên nhiều nền tảng khác nhau và nhiều người đồng ý rằng đó là tương lai.


tốt, bản thân openGL thực sự di chuyển với tốc độ chậm một cách ngoạn mục. và chỉ vì van có công cụ nguồn của họ trên linux không có nghĩa gì với việc sử dụng OpenGL.
CobaltHex

tốt, đó là vấn đề đối phó với tất cả các mâu thuẫn giữa các trình điều khiển. Tôi biết rằng trình điều khiển lập trình cho opengl là một nỗi đau lớn ở mông và sẽ có lỗi không có vấn đề gì, nhưng có lẽ ít hơn nếu nó trở nên phổ biến hơn
dreta

1
@CobaltHex, thực sự, nó có nghĩa rất nhiều. Khi một công ty lớn thực tế ra lệnh cho ngành công nghiệp trò chơi điện tử chọn một nền tảng và đứng đằng sau nó một cách vững chắc, tôi chắc chắn những người khác sẽ làm theo.
jcora

trong khi tôi chắc chắn một số người sẽ nhìn vào hơi nước trên OSX
CobaltHex

Đó là một tình huống rất khác. Gaben dựa trên đã nói rằng họ thất vọng với W8 và về cơ bản họ đang chuyển đổi nền tảng. Trái ngược với OSX, Linux là miễn phí, có thể truy cập trên nhiều loại phần cứng và có một cộng đồng nhà phát triển tuyệt vời. Chưa kể các trò chơi của Valve chạy nhanh hơn nhiều trên OpenGL trên Windows và thậm chí nhanh hơn trên OGL trên Linux.
jcora

1

Đây là chà. DirectX bị giới hạn trong các hệ thống dựa trên Microsoft, chẳng hạn như bảng điều khiển Windows và XBox.

OpenGL, mặt khác, chạy trên hầu hết mọi thứ trong phiên bản này hay phiên bản khác.

Theo như "bạn nên học nó", nếu bạn có kế hoạch trở thành một lập trình viên đồ họa, câu trả lời đơn giản là, học cả hai và nếu bạn muốn viết một trình kết xuất nhanh như chớp, hãy học Mantle / Vulkan (không dành cho người yếu tim) .

Tuy nhiên, nếu bạn chỉ muốn làm game, đừng bận tâm. Bạn sẽ học tập hiệu quả hơn rất nhiều để sử dụng phát triển với Unity hoặc Unreal.


0

Có vẻ như bạn đang ở giai đoạn "vặn ngón tay cái" chứ không phải trong giai đoạn "chúng ta nên sử dụng gì để viết mã cho công cụ tiếp theo của mình", tôi khuyên bạn không nên học OpenGL hay học Direct3D.

Tìm một thư viện cấp cao hơn giúp mọi thứ trở nên dễ dàng với bạn, và bắt đầu thực hiện thay vì nhìn chằm chằm vào hàng núi những thứ mà bạn nghĩ rằng bạn cần phải học trước.

Bạn cần phải thoải mái với các khái niệm cấp cao hơn như toán học vectơ, ánh xạ kết cấu, v.v. trước khi bạn làm việc hiệu quả trong OpenGL. Vì vậy, hãy chọn một thư viện, chẳng hạn như Ogre3D, Unity, Panda3D, v.v. có ý nghĩa đối với nền tảng của bạn và bắt đầu tạo mọi thứ. Một khi bạn đang làm và không nhìn chằm chằm , sau đó bạn có thể thấy những gì tiếp theo để tìm hiểu sẽ có ý nghĩa.

Tôi cá là OpenGL hoặc Direct3D sẽ xuất hiện rất muộn trong danh sách những điều cần học.


0

Rõ ràng từ tin tức ngày nay (GL4.3 / ES3), OpenGL sẽ không biến mất và vẫn rất đáng để đầu tư. Nếu không có gì khác, nếu bạn muốn nhắm mục tiêu Linux hoặc Max OS, bạn cần OpenGL và ES hoàn toàn chiếm ưu thế trong lĩnh vực di động.

Ngoài ra, về lâu dài, bạn nên cân nhắc nghiêm túc về việc học cả hai API, vì kiến ​​thức về cả hai sẽ tốt hơn cho sự phát triển cá nhân của chính bạn. Câu hỏi thực sự duy nhất là học cái nào trước, và vì OpenGL dễ dàng hơn cho bạn nên đó là quyết định được đưa ra.

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.