The problem with forcing a 3.2+ context is that only a subset of users will be able to play your game. For example, only ~38% of Minecraft users support GL 3.2+
My tutorials focus on "modern GL" (i.e. programmable pipeline) using code and techniques that will be compatible with GL 2.0+ and GL ES. Check out the API to see how things are done, like custom vertex attributes, shader compilation, and so forth. You can add your own VBO/VAO stuff on top relatively easily by implementing VertexData. (Although, for most purposes, simple vertex arrays will suffice.)TutorialsAPI
Briefly looking at your code, I have a couple suggestions:
- Decouple GL boilerplate/rendering from your game and entity structure (rather than putting VAO/VBO stuff inside of Player)
- You should re-use float arrays (i.e. in your Vertex class) instead of creating new ones every frame, to minimize garbage. This is especially important if you ever plan to do mobile/ES programming.