Định kiến
Ok, vì vậy những gì tôi đã thu thập được cho đến nay là:
- không sử dụng đường ống cố định (không dùng nữa hoặc sẽ không được dùng nữa)
- vbos lưu trữ "mô hình đối tượng" (n dữ liệu đỉnh, chủ yếu)
- vaos mô tả cách dữ liệu được đặt xuống để các cuộc gọi rút ra biết phần nào của mỗi vbo dành cho loại thông tin đỉnh nào (một vao có thể tham chiếu đến nhiều vbos, ngược lại là khó khăn)
- mỗi lệnh gọi cũng gửi dữ liệu đỉnh tới các shader
Cách tôi xem 3D (tùy chọn)
Với những thông tin này, tôi có thể thấy cách vẽ các đối tượng phức tạp 3D rất đẹp với OpenGL hiện đại. Về cơ bản, bạn tải một loạt các mô hình đối tượng (có thể từ Blender hoặc phần mềm tương tự khác) vào VBO với tọa độ cục bộ, sau đó bạn chỉ cần cung cấp cho mỗi phiên bản của một đối tượng một tham số shader khác nhau (offset) để vẽ vào không gian thế giới.
Vấn đề / câu hỏi
Trong các vấn đề 2D và ưu tiên là hoàn toàn khác nhau, mặc dù. Bạn không vẽ nhiều đối tượng phức tạp, bạn không cần các ma trận chiếu phức tạp và các chú thích và shader đơn giản hơn nhiều.
Điều gì sẽ là cách tốt nhất để vẽ thường xuyên (thực sự thường xuyên, về cơ bản mọi khung hình) thay đổi hình học với OpenGL hiện đại?
Trong đoạn văn sau, bạn có thể thấy một số ý tưởng về các vấn đề (vấn đề hình tròn và hình chữ nhật), xác định rõ hơn loại thay đổi mà tôi quan tâm.
Nỗ lực của tôi (tùy chọn)
Vì vậy, tôi bắt đầu nghĩ làm thế nào tôi sẽ đối phó với việc vẽ hình học 2D cơ bản trên màn hình:
- hình vuông: tải
[(1, 0), (1, 1), (0, 1), (0, 0)]
VBO cho hình dạng của hình vuông trong không gian cục bộ, sau đó cung cấp cho shader chiều rộng thực tế của tọa độ hình vuông và thế giới và thông tin màu sắc
làm mát, trông dễ dàng. Hãy di chuyển đến một vòng tròn:
- một vòng tròn: quạt tam giác với ... eh. độ chính xác bao nhiêu (số đỉnh)? đối với vòng tròn nhỏ, độ chính xác phải nhỏ và đối với vòng tròn lỗi thì độ chính xác phải cao. Rõ ràng tải 1 VBO có thể có thể phù hợp với tất cả các trường hợp. Điều gì xảy ra nếu tôi cần thêm độ chính xác vì một vòng tròn được thay đổi kích thước để lớn hơn?
Ít mát mẻ. Hãy di chuyển đến một cái gì đó dễ dàng hơn một chút, một hình chữ nhật:
- một hình chữ nhật: eh. không có "hình học hình chữ nhật chung". Bạn chỉ có tỷ lệ chiều rộng / chiều cao và đó là như vậy, nhưng mỗi hình chữ nhật có thể khác nhau nếu kích thước thay đổi.
Như bạn có thể thấy, mọi thứ đi xuống dốc từ đó. Đặc biệt với đa giác phức tạp và whatnot.
Không có chính sách mã: P
Tôi chỉ cần một cái nhìn tổng quan về ý tưởng, không có mã nào là cần thiết, đặc biệt là mã C hoặc C ++. Chỉ cần nói những thứ như: "tạo VBO với dữ liệu đỉnh này và sau đó liên kết nó, ...".