This is a very serious problem, which causes at least 60% performance loss.
Using VisualVM, I found that glBindVertexArray took up a lot of CPU time.
I think this is caused by frequent OpenGL calls after glBindVertexArray, such as glBindBuffer, glEnableVertexAttribArray, glVertexAttribPointer.
VAO only needs to bind its attributes once, and then it does not need to bind every time it is drawn.
Finally, a large number of drawing calls will also cause performance loss. Try merging vertex buffers into one.
This is a very serious problem, which causes at least 60% performance loss.
Using VisualVM, I found that glBindVertexArray took up a lot of CPU time.
I think this is caused by frequent OpenGL calls after glBindVertexArray, such as glBindBuffer, glEnableVertexAttribArray, glVertexAttribPointer.
VAO only needs to bind its attributes once, and then it does not need to bind every time it is drawn.
Finally, a large number of drawing calls will also cause performance loss. Try merging vertex buffers into one.