Cốt lõi của mã (hiển thị hình chữ nhật màu đỏ):Vẽ VBO với glDrawArrays làm việc trong OpenGL 2.1 nhưng không phải trong OpenGL 3.x
//bind program, set uniforms, bind vbo
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0,0);
glDrawArrays(GL_TRIANGLES, 0, 6);
glDisableVertexAttribArray(0);
//unbind vbo, unbind program
Khi tôi chuyển đổi ngữ cảnh để OpenGL 3.x mã này dừng lại để làm việc (Tôi chỉ có thể nhìn thấy màu nền), nhưng khi tôi khởi tạo VAO theo cách tương tự như mã ở trên và sau đó tôi ràng buộc VAO và gọi glDrawArrays, thì nó hoạt động.
Điều gì có thể là vấn đề? Làm thế nào tôi có thể vẽ VBO mà không cần sử dụng VAO?
(shaders là thực sự đơn giản, vs chỉ ma trận mulitplies và đầu ra ps màu đỏ)
Tôi đã nghĩ rằng VAO của là không bắt buộc. (mã của tôi không ném bất kỳ lỗi nào). Vậy làm thế nào tôi nên sử dụng VAO? 1 VAO = 1 mô hình? – chris
Tạm thời tôi sẽ sử dụng một VAO toàn cầu. – chris
Bạn có thể thu thập nhiều mô hình trong một VAO. Tôi thường thu thập các mắt lưới của các tính chất tương tự mà luôn luôn đến với nhau trong VAO. Ví dụ: tất cả các phần tử tĩnh của bản đồ của một công cụ trò chơi sử dụng cùng một trình đổ bóng có thể được thu thập trong một VAO. Sắp xếp theo shader và tài sản vật chất có lẽ là tiêu chí phân loại tốt nhất, tôi muốn nói. – datenwolf