Tôi mới bắt đầu học OpenGL hôm nay từ hướng dẫn này: http://openglbook.com/the-book/
Tôi đã đến chương 2, nơi tôi vẽ một hình tam giác và tôi hiểu mọi thứ ngoại trừ VAO (từ viết tắt này có được không?). Hướng dẫn có mã này:
glGenVertexArrays(1, &VaoId);
glBindVertexArray(VaoId);
Mặc dù tôi hiểu rằng mã là cần thiết, nhưng tôi không biết nó làm gì. Mặc dù tôi không bao giờ sử dụng VaoId quá thời điểm này (ngoại trừ để phá hủy nó), mã không hoạt động nếu không có nó. Tôi cho rằng điều này là do nó bắt buộc phải ràng buộc, nhưng tôi không biết tại sao. Mã chính xác này có cần là một phần của mọi chương trình OpenGL không? Hướng dẫn giải thích VAOs là:
Đối tượng Mảng Đỉnh (hoặc VAO) là một đối tượng mô tả cách các thuộc tính đỉnh được lưu trữ trong Đối tượng Bộ đệm Vertex (hoặc VBO). Điều này có nghĩa là VAO không phải là đối tượng thực sự lưu trữ dữ liệu đỉnh, mà là bộ mô tả dữ liệu đỉnh. Các thuộc tính Vertex có thể được mô tả bằng hàm glVertexAttribPointer và hai hàm chị em của nó là glVertexAttribIPointer và glVertexAttribLPointer, cái đầu tiên chúng ta sẽ khám phá bên dưới.
Tôi không hiểu VAO mô tả các thuộc tính đỉnh như thế nào. Tôi đã không mô tả chúng theo bất kỳ cách nào. Nó có lấy thông tin từ glVertexAttribPointer không? Tôi đoán đây phải là nó. VAO có đơn giản là một điểm đến cho thông tin từ glVertexAttribPointer không?
Xin lưu ý thêm, hướng dẫn tôi đang làm theo có được chấp nhận không? Có điều gì tôi nên để ý hoặc một hướng dẫn tốt hơn để làm theo không?