OpenGL 2 và back vs 3 và chuyển tiếp: sự khác biệt chính cho đồ họa 2D là gì? [đóng cửa]


7

Bối cảnh OpenGL trước và sau OpenGL 3.0 khá khác nhau. Cho đến nay tôi thực sự chỉ làm việc với bộ đệm ở hai bên, tôi biết sự khác biệt đáng chú ý nhất là thiếu Chế độ tức thời.

Kết hợp tất cả các cân nhắc về Chế độ tức thời cùng nhau, tôi cần chú ý những điểm khác biệt quan trọng nào khi mã hóa các hoạt động hai chiều cấp thấp trong công cụ đồ họa 2 chiều?


Câu trả lời cho đến nay rất hữu ích, tuy nhiên chỉ là một lưu ý: Tôi thực sự cảm thấy thoải mái hơn với GL3 + vào lúc này và đang nghĩ đến việc chuyển trở lại 2.1 để tương thích. Điều quan trọng nhất là phiên bản nào sẽ tương thích nhất với OpenGL ES.
Garet Claborn

2
Tôi tò mò muốn biết lý do tại sao bạn quay lại bản chỉnh sửa trước đó ...
Vaillancourt

đó là bởi vì tiêu đề này đang đề cập đến một sự thay đổi lớn cụ thể trong phương pháp luận cốt lõi OpenGL. trước phiên bản 3, kiến ​​trúc OpenGL đã gắn chặt với kiến ​​trúc OpenGL 1.1 và 1.0. Lý do đây là một điểm quan trọng trong lịch sử / phương pháp OpenGL là miền cụ thể cho OpenGL. Sau khi phiên bản này, khả năng tương thích ngược bị phá vỡ lần đầu tiên kể từ 97 trở lên. Đây cũng là một sự phân ly lớn trong việc làm cho tiêu chuẩn trở nên thiết thực hơn cho phần cứng hiện đại. Điều quan trọng đối với ý nghĩa của câu hỏi này là nó đại diện cho sự phá vỡ trong kiến ​​trúc.
Garet Claborn

Câu trả lời:


8

Xét về bối cảnh cụ thể, có rất ít sự khác biệt. Hầu hết các triển khai OpenGL có hầu hết các tính năng của OpenGL 3.0+ ngay cả khi sử dụng bối cảnh cũ, do cách thức hoạt động của các tiện ích mở rộng OpenGL.

Nếu bạn đặc biệt hỏi về những tính năng nào trong OpenGL 3.0 đáng để sử dụng, một số tính năng tốt nhất là trình tạo bóng hình học và sự ổn định, cả hai đều hữu ích ngay cả đối với đồ họa 2D trong một số trường hợp nhất định. Tuy nhiên, trong hầu hết các trường hợp cho 2D đơn giản, tất cả những gì bạn sẽ làm là lấp đầy bộ đệm đỉnh phát trực tuyến mỗi khung hình và thực hiện một cuộc gọi rút thăm duy nhất, vì vậy thực sự bạn sẽ thực hiện thêm rất ít.

Về mặt 2D trong OpenGL nói chung, chỉ cần đảm bảo rằng bạn có tập bản đồ kết cấu (bảng sprite) để bạn hiếm khi cần thay đổi trạng thái kết cấu. Bạn muốn tránh thực hiện một cuộc gọi rút thăm trên mỗi sprite, vì điều đó cực kỳ không hiệu quả, và thay vào đó bạn muốn tập hợp rất nhiều họa tiết và vẽ tất cả chúng cùng một lúc. Kết xuất với thuật toán của họa sĩ, trong đó "kết xuất" có nghĩa là đẩy hình học vào bộ đệm đỉnh và vẽ nó ở cuối. Hậu xử lý khi bạn thấy phù hợp.


3

Bạn có thể tìm thấy rất nhiều thông tin ở đây: đăng ký OpenGL . Có rất nhiều phần mở rộng. Mỗi phần (ARB, EXT, ...) được sắp xếp theo ngày thêm. Các tiện ích mở rộng mới được viết dựa trên các phiên bản mới hơn của OpenGL. Ví dụ: nếu tôi xem phần ARB, hầu hết mọi tiện ích mở rộng trong ARB_timer_query (bao gồm) được viết theo OpenGL 3.2 hoặc mới hơn.

Bạn cũng đã đề cập đến bộ đệm, vì vậy bạn có thể thử tiện ích mở rộng GL_NV_vertex_buffer_unified_memory. Một số thông tin có thể được tìm thấy ở đây (cũng có liên kết để trình bày).

Ngoài ra shader_buffer_load sẽ hữu ích, nếu bạn đang sử dụng shader, nhưng tôi chưa đọc thông số kỹ thuật.

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.