Sự khác biệt giữa OpenGL 1.x và 2.x là gì?


13

Có hướng dẫn tốt nào cho thấy sự khác biệt giữa OpenGL 1. * và 2. * không?

Sẽ rất hữu ích khi biết những chức năng nào tôi không nên gọi (như glBegin (), tôi giả sử).


1
Hãy để tôi nói lại câu hỏi của bạn. Sự khác biệt giữa kết xuất chức năng cố định và Shader là gì?
EnabrenTane

3
Đó là một câu hỏi hoàn toàn khác.
Jari Komppa

Câu trả lời:


11

Các OpenGL.org bắt đầu trang có một cái nhìn tổng quan, với nhiều liên kết đến các hướng dẫn khác nhau.

Nói tóm lại, OpenGL 2.0 sống giữa chức năng cố định (1.x) và thế giới lập trình hoàn toàn (2.x +); bạn vẫn có thể sử dụng mọi thứ OpenGL 1.x có trong khi thêm các shader. Tiến về phía trước (3.x +), tất cả các loại hệ thống chức năng cố định cũ bắt đầu bị phản đối, do đó, tốt hơn là nên có một khởi đầu sạch sẽ thay vì trộn lẫn cả hai thế giới.

Tôi cũng ngạc nhiên khi điều này chưa được hỏi trước đây .. hoặc ít nhất là tôi không thể tìm thấy nó trên một tìm kiếm nhanh.


Tôi không thể tìm thấy một hướng dẫn cụ thể phiên bản. (ngoại trừ 3.0)
t123

Có rất nhiều liên kết từ trang đó, trong phần "Hướng dẫn và cách hướng dẫn", nhưng về cơ bản, bạn có một sự lựa chọn giữa OpenGL 1.x và "bất cứ điều gì khác".
Jari Komppa

@ tm1rbrt: Bạn sẽ không tìm thấy hướng dẫn cụ thể cho 2.1, vì tất cả các hướng dẫn 1.x hợp lệ vẫn là hướng dẫn 2.1 hợp lệ. Lý do duy nhất có sự phá vỡ ở mức 3.x là vì đó là nơi các API đã bị xóa. Nếu bạn đang tìm kiếm các hướng dẫn dựa trên shader 2.1 thời đại, các hướng dẫn lighthouse3d có thể sử dụng được. Tuy nhiên, bạn nên lưu ý rằng phần cứng 3.x đã xuất hiện từ năm 2006 và thậm chí bây giờ được nhúng vào bo mạch chủ và thậm chí cả CPU. Vì vậy, tương lai không có trong thế giới 2.x; hướng dẫn trong tương lai thường sẽ tập trung vào 3.x trở lên.
Nicol Bolas

3

Các phiên bản OpenGL, nói chung, không giống như các phiên bản Direct3D. Mã cũ của bạn vẫn hoạt động với các phiên bản mới (với một ngoại lệ). Do đó, OpenGL v1.4 sẽ hoạt động tốt trong OpenGL 2.1. Phiên bản OpenGL là bổ sung, không trừ.

OpenGL 2.0 và 2.1 thêm các shader, trong Ngôn ngữ tạo bóng OpenGL. Họ cũng thêm một số tính năng khác, như kết cấu dấu phẩy động, kết cấu không có sức mạnh của hai, v.v. Danh sách đầy đủ có sẵn trong chính đặc tả OpenGL 2.1 . Chỉ cần nhìn vào phần "Phiên bản"; họ sẽ cho bạn biết những gì đã thay đổi từ phiên bản trước.

Ngoại lệ duy nhất cho quy tắc về thay đổi API là OpenGL 3.1 (có, 3.1, không phải 3.0). Trong OpenGL 3.0, một số API được chỉ định là "không dùng nữa". Điều này có nghĩa là ARB, ủy ban phụ trách OpenGL, có thể loại bỏ các chức năng này khỏi các phiên bản sau. Việc xóa này đã xảy ra trong OpenGL 3.1. Đặc tả 3.0 có một danh sách lớn các nội dung không dùng nữa và thông số 3.1 được cắt giảm tương ứng.

Lưu ý rằng bạn không cần phải quan tâm (ít nhất là trên Windows và Linux. MacOSX thì khác). Bạn có thể chạy tốt ở chế độ " tương thích ", trong đó tất cả các tính năng đã xóa trước đó trở lại. Việc triển khai OpenGL không phải hỗ trợ bối cảnh tương thích (và Mac OS X Lion thì không. Nó hỗ trợ lõi 2.1 hoặc 3.2, theo yêu cầu của bạn), nhưng tất cả chúng vẫn làm. Chỉ để tương thích ngược với các ứng dụng cũ.


Bạn có thể thêm bất cứ điều gì về OpenGL 4. * không?
Kromster nói hỗ trợ Monica

@Krom: Không có gì nhiều để nói. Cũng giống như đi từ 1.x đến 2.x, không có gì bị xóa.
Nicol Bolas

0

Tôi tin rằng có các hướng dẫn cho opengl 1.x và 2.x, nhưng rất có thể sẽ không có hướng dẫn cho thấy chúng khác biệt như thế nào với các tính năng hoặc dễ sử dụng, v.v.

Có thể tốt nhất là tìm kiếm các hướng dẫn cho phiên bản opengl cụ thể, tìm các hướng dẫn tương tự và tự so sánh chúng.


Nghiêm túc ai giữ ngẫu nhiên hạ thấp ý kiến ​​của tôi?
LizardGamer

Tại sao các downvote ở đây? Không phải câu trả lời tuyệt vời, nhưng downvote? Không chắc. Câu hỏi thực sự muốn một cái gì đó không bình thường ... Hướng dẫn cho thấy sự khác biệt, đó chủ yếu không phải là những gì hướng dẫn làm ...
Notabene

@LizardGamer Tôi thấy rằng bạn đã tham gia gamedev.SE vài ngày trước, vì vậy tôi muốn nói, "Chào mừng!". Tuy nhiên, bạn thực sự nên đọc Câu hỏi thường gặp tại đây: gamedev.stackexchange.com/faq Câu trả lời này là một ví dụ hoàn hảo về loại câu trả lời bạn KHÔNG muốn đưa ra. Cố gắng cụ thể hơn và chắc chắn mang tính xây dựng hơn với cả câu hỏi và câu trả lời của bạn. Câu hỏi thường gặp sẽ giúp bạn nhận ra mục đích của trang web này và loại nội dung chúng tôi đang tìm kiếm. Chúc may mắn!
Amplify91

@notabene câu trả lời này không thực sự trả lời câu hỏi. Gợi ý duy nhất mà nó đưa ra về cơ bản là "tìm kiếm câu trả lời". Rõ ràng, OP đã làm điều đó bằng cách đặt câu hỏi ở đây.
Amplify91

@ Amplify91 Cảm ơn bạn vì lời chào mừng duy nhất tôi đã có, và tôi đã đọc Câu hỏi thường gặp, tôi không tìm thấy nó là một ví dụ về những điều không nên hỏi? Thêm vào đó, nó trả lời câu hỏi, vì tôi chưa thấy bất kỳ hướng dẫn nào liên quan đến việc so sánh các phiên bản của opengl
LizardGamer
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.