Câu hỏi Làm thế nào để tôi có được kích thước của một VBO trong OpenGL-ES?


Tôi đã gửi mảng đỉnh (32 bit nổi) cho GPU mỗi lần tôi muốn vẽ chúng, nhưng điều này không hiệu quả, vì vậy tôi đã chuyển sang Vertex Buffer Objects để lưu trữ các mảng đỉnh của tôi trong GPU.

Đó là làm việc, nhưng tôi đã tự hỏi nếu có một cách để xác định kích thước của một VBO nhất định sau này mà không quay trở lại các mảng đỉnh ban đầu? Đây là quá trình tôi đang đấu tranh với:

  1. Tôi có một mảng đỉnh của, ví dụ, sáu 32 bit nổi.
  2. Tôi gửi mảng đỉnh của mình đến GPU thông qua OpenGL-ES, nơi nó được lưu trữ trong một VBO - mà tôi giữ lại một tay cầm.
  3. Mảng đỉnh của tôi là dư thừa vào thời điểm này vì vậy tôi xóa nó.
  4. Sau này tôi sử dụng tay cầm để làm cho OpenGL-ES vẽ một cái gì đó, nhưng tại thời điểm này tôi cũng muốn biết làm thế nào để xác định kích thước của mảng đỉnh mà ban đầu được sử dụng để tạo ra VBO. Tôi bây giờ chỉ có VBO xử lý - tôi có thể xác định lại bằng cách nào đó mà tôi đã lưu trữ sáu 32 bit nổi trong VBO này?

Tôi có thể thiếu một cái gì đó thực sự rõ ràng. Cảm ơn mọi lời đề nghị!


13
2017-09-29 06:51


gốc




Các câu trả lời:


Doh! Chỉ cần tìm thấy nó:

int nBufferSize = 0;

glGetBufferParameteriv (GL_ARRAY_BUFFER, GL_BUFFER_SIZE, & nBufferSize);

int originalVertexArraySize = (nBufferSize / sizeof (float));


18
2017-09-29 07:18