A change in convention: At least use namespace std and glm First thing: It's a little hard to tell where we are! Making a bunch of our objects, in different colors or something Instanced rendering and the vertex shader, what we pass to the fragment shader We'll probably want different shaders for the floor Try to keep glDraw calls minimal, and do a lot with each call But if you want to change shader programs, you have to make another call How about some kind of floor? We can use tiles Could also just do one big one Now that there's a floor, let's jump! Usually that's the spacebar But it's an instant thing, not a hold! Double-jumping? We'll leave it for now For development, it often helps to have a fly mode of some sort Framerate: We're artificially limiting it First: Let's figure out what the framerate actually is What happens now if we take out the limiter? glfwGetTime to control rotation rather than count Is vsync on? How does it work in glfw anyway? The movement really should be separate Movement shouldn't slow down if framerate does A new std::thread Rate limiting: Can set usleep based on glut, or set a timer A raised place in the floor: It just changes the floor level in a certain area UI note: It's normally rendered You can render without having applied an MVP glRaster and glutBitmapCharacter, probably similar with glfw That's how it worked last time, but we'll use Dear ImGui this semester Dear ImGui is better