2011-11-08 69 views
9

thể trùng lặp:
OpenGL 4.1 vs 3.1+Sự khác biệt giữa OpenGL 3.x và 4.X?

Đọc một số trang trên trang web, tôi thấy các ví dụ cùng một mã niêm yết cho cả hai phiên bản OpneGL. Tôi biết hai sử dụng đường ống chức năng lập trình, không giống như các phiên bản trước đó, nhưng sự khác biệt lớn giữa hai là gì? Tại sao bạn sử dụng cái này qua cái kia?

Trả lời

36

Số phiên bản chính OpenGL thể hiện hiệu quả mức phần cứng, như số phiên bản chính D3D. GL 2.x đại diện cho phần cứng DX9. GL 3.x đại diện cho phần cứng hạng DX10. Và do đó, GL 4.x đại diện cho phần cứng DX11.

Không phải tất cả các tính năng được giới thiệu trong GL 4.x đều cụ thể về phần cứng. Một số tính năng tiện lợi và dọn dẹp API. Đây là những phần mở rộng cho phần cứng cấp thấp hơn, và các trình điều khiển từ NVIDIA và AMD cung cấp chúng. Phần lớn nhất trong số này là program separation, đây là điều GLSL cần thiết cho thời gian dài.

Về mặt tính năng phần cứng thực tế được trình bày bởi GL 4.x không có sẵn trong 3.x, nó không phải là rất lớn hoặc thay đổi trò chơi. Nó chắc chắn có ý nghĩa, nhưng không phải di chuyển trên trái đất. Bạn có thể tìm chi tiết các tính năng GL theo phiên bản trên OpenGL Wiki.

Image load/storeatomic counters có lẽ là những cái lớn nhất (bao gồm cả shader storage buffers), mặc dù đồng thời được quảng cáo ít nhất. Shader có thể ghi/đọc trực tiếp từ hình ảnh và bộ đệm, mặc dù có a lot of caveats and synchronization issues to understand về việc này.

GL 4.3 được thêm compute shaders, kết hợp với phần trên cho phép bạn thực hiện các tác vụ tính toán mà không bị đau do tương tác OpenCL/OpenGL.

Tính năng được nói nhiều nhất là tessellation. Điều này giới thiệu một cặp các giai đoạn đổ bóng bổ sung: một giai đoạn quyết định mức độ phân bổ một nguyên thủy và phần còn lại để quyết định cách tạo ra các giá trị mới từ nguyên thủy được phân tách.

Subroutines là một tính năng thú vị nhưng thường bị bỏ qua. Về cơ bản, bạn có thể đính kèm chương trình con vào chương trình đổ bóng như đồng phục. Vì vậy, bạn có thể sử dụng cùng một chương trình cơ bản sẽ chạy một chức năng chiếu sáng, nhưng bạn có thể trao đổi chức năng chiếu sáng mà không thay đổi chương trình. Chương trình cơ bản sẽ tìm nạp các kết cấu, tìm ra các tham số vật liệu khuếch tán/specular/etc là gì, xác định các tham số thông thường và ánh sáng, và truyền thông số đó cho chương trình con. Bạn có thể có nhiều chương trình con ánh sáng khác nhau, từ sự khuếch tán Lambertian nhanh chóng và đơn giản đến đầy đủ trên Cook-Torrance (mặc dù bạn cần thêm một số thông số vật liệu).

+2

Câu trả lời này xứng đáng nhiều hơn + 5 ^^. Sách của bạn trên OpenGL thực sự tuyệt vời ngay cả khi điều hướng là như vậy. – Korchkidu

+0

@Korchkidu: sách gì? – ssc

+0

Ngoài những thay đổi nội bộ, tôi có thể thực sự _see_ sự khác biệt không? Ví dụ: khi tôi xem xét kỹ một trò chơi hoặc bản trình diễn 3D, những thay đổi đó có dẫn đến một cái gì đó mà _looks_ tốt hơn không? – ssc

Các vấn đề liên quan