Liên kết OpenGL và quan hệ giữa các thực thể


12

Đây chủ yếu là một câu hỏi tài liệu. Tôi hy vọng đây là nơi thích hợp để hỏi và không, ví dụ, lập trình viên hoặc stackoverflow.

Tôi không đọc đặc tả OpenGL, nhưng từ sách (Sách đỏ) và hướng dẫn khác nhau, tôi không thể nắm bắt chính xác cách các đối tượng và các phần khác nhau của API tương tác và liên quan.

Ví dụ: tôi biết rằng nếu VAO bị ràng buộc, thì ràng buộc VBO và đặt thuộc tính sẽ dẫn đến việc VBO bị ràng buộc với VAO.

Nhưng có nhiều đối tượng, mối quan hệ của họ có thể khác nhau. Ví dụ, VAO hoàn toàn không liên quan đến chương trình tô bóng hiện tại, nhưng kết quả của các hoạt động vẽ có thể phụ thuộc vào cả hai.

Trong số tất cả các thành phần OpenGL khác nhau, tôi có thể thấy một số mối quan hệ như A-binds-to-B hoặc A-and-B-are-used-by-C. Tất cả các mối quan hệ này đồng ý trong việc xác định cách người ta có thể thay đổi trạng thái của bối cảnh, làm thế nào có thể thay đổi mọi thứ, làm thế nào có thể lưu mọi thứ lại với nhau và tối ưu hóa.

Tôi đang tìm kiếm các nguồn lực giải thích chỉ những mối quan hệ này. Giống như sơ đồ UML, biểu đồ hoặc thậm chí là tài liệu văn bản, không tập trung vào các cuộc gọi, nhưng mô tả một cách gọn nhẹ cách các thành phần OpenGL khác nhau tương tác và liên kết với nhau.

Bạn có biết nơi để tìm một tài nguyên như vậy?


3
Câu hỏi tuyệt vời. Tôi đã có toàn bộ thư viện / công cụ OpenGL của mình và chạy mà không có câu trả lời siêu rõ ràng cho câu hỏi chính đó.
david van brink

1
Liên kết một VBO không liên kết nó với VAO. Điều này thay vì đạt được với glVertexAttribPointer(). Sơ đồ cho các đối tượng OpenGL sẽ khá nông và đơn giản, thực tế không có nhiều hơn một số đối tượng khác nhau trong OpenGL. VAO sử dụng bộ đệm cho các thuộc tính. Kết cấu bộ đệm được hỗ trợ bởi bộ đệm. Framebuffers có đính kèm kết cấu. Các lệnh vẽ sử dụng VAO hiện tại, chương trình hiện tại, bộ đệm khung hiện tại, cài đặt bộ lấy mẫu hiện tại và bộ đệm chỉ mục hiện tại / bộ đệm gián tiếp. Bạn có thể có thể tự vẽ sơ đồ.
Dietrich Epp

1
Xin lỗi, tôi sẽ không vẽ một bức tranh cho bạn.
Dietrich Epp

2
Câu hỏi hay, và từ chỗ tôi đứng, chúc may mắn nhận được câu trả lời toàn diện mà không đặt một khoản tiền thưởng đáng kể nào cho nó.
Kỹ sư

2
Thiết kế của OpenGL là một lập luận tuyệt vời về lý do tại sao bạn không nên sử dụng các biến toàn cục ;)(toàn bộ API là một mớ dữ liệu toàn cầu khổng lồ)
glampert

Câu trả lời:


7

Vì vậy, tôi đã thử vẽ sơ đồ của riêng tôi. Nó không toàn diện, chủ yếu là vì tôi không thú vị trong một số thứ ngay bây giờ, nhưng cũng vì tôi muốn nó có thể đọc được (ngay cả khi nó không phải là một biểu đồ được chỉ định chính thức, tôi nghĩ nó nên dễ đọc).

Ngoài ra, vì dường như được một số người quan tâm, tôi muốn chia sẻ nó ở đây để nhận phản hồi và kiểm tra nó. Tôi đã sử dụng wiki OpenGL làm tài liệu tham khảo để kiểm tra tính chính xác, nhưng tôi có thể đã đưa ra các lỗi.

Ngoài ra, nếu thông tin được cung cấp không đủ cho bạn hoặc tôi đã bỏ qua các mối quan hệ quan trọng xứng đáng được đưa vào sơ đồ, vui lòng đề xuất thông tin đó và tôi sẽ cố gắng cập nhật.

Sơ đồ liên kết ràng buộc OpenGL

Một lần nữa, vui lòng báo cáo lỗi, vấn đề hoặc đề xuất, họ được chào đón nồng nhiệt.

BIÊN TẬP

  1. Mối quan hệ giữa bản vẽ và thuộc tính bị thiếu: các thuộc tính phải được bật để có hiệu lực khi kết xuấ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.