glUseProgram(program_id); // -> Set this program as the currently active one
glUniform[Matrix][ifd ui](...); // -> Send some informations to Uniform variables
// (Only for the currently active program)
// (Uniform variables can change at most once for each draw call.
// Their value cannot change from one vertex to another.
// You use vertex attributes for that, following the texture coordinates path,
// using an unique attribute ID.)
glBindVertexArray(vertex_array_id); // -> Bind this vertex array (in poor words, set this model as current model for drawing commands)
glDrawArrays/glDrawElements(...); // -> Draw this vertex array with program_id->main(),
// using the uniform variables set from glUniform, and the model chosen from BindVertexArray.
Anyways, checking his profile, I saw this:
|Mo' vertex buffers, mo' problems.|
Taking into consideration Vertex buffers is the short for VBOs, I feel I'm right.
Also, skeletal animations...
With skeletal animations, I feel like we'll be needing slightly more VRAM than usual.
Based on the amount of bones, we will probably need 16 floats for each bone (a mat4) plus a uint (or multiple uint-float couples for bone weighting, probably not happening for a game like Minecraft anyways) each model vertex on the VRAM side (which is not a lot these days).
Since Minecraft's issue is not the VRAM itself (if developed correctly enough, sharing blocks can save a lot of video memory) sounds like a good step forward.
That is, unless they choose to use buffer uniforms to store the map.
That requires a lot more thinking to be done correctly.
I think they want an optimized gl3/4~ engine by version 2.
If the shaders aren't kept hidden enough, wallhacks will be easier than usual to do. Since an optimal texturing means passing the texture id via uniforms, It's enough to check the texture id in the shader, and reject the fragment drawing if it's a regular block.
Note: These details are based on how Minecraft works.
Most games have a different texture for each object.
As long as Minecraft doesn't work this way, the above note stays alive.