Minecraft 1.12.2 Renderbook
This section aims to serve as a tutorial for Minecraft 1.12.2 rendering, but you can also expect general OpenGL, LWJGL, engine design ideas to be explained.
Note: You are free to copy any examples from this repo, but follow MIT license still.
Intro To GL States
Rotation
Alpha & Blending
Stencil
You are now expected to be pretty experienced with HUD/UI rendering after "Intro To GL States", "Rotation", "Alpha & Blending", "Stencil".
Time to test/experiment with some HUD/UI rendering thingy!
Continue reading when you are confident with UI drawing and even fancy animations.
From now on, you can expect deeper and more "serious" GL contents.
The major issue with the fixed-func pipeline is not only how it's "fixed-func'd" but also how the pipeline is non-scalable and fragile. A better alternative is the modern programmable pipeline (generally considered as GL30+), where streamlining data and rendering is made possible by VAO, Shader, etc.
A programmable pipeline is not essentially needed because it's faster. Don't be lured by micro-optimizations. We all care more about the structural wise modularity and scalability.
- Drawing Tris Using Vertices and Indices Via The Modern Pipeline
- Shader Loading & Shader Program
- VAO & Vertex Format
- Common Buffer Objects
- Typical Shader Setup
NIO ByteBuffer
GL States Related Concerns
Here are some major Concerns
GL Execution Model
Key point: Now you've understood that OpenGL isn't merely about the correct command combinations; "Nothing" is necessarily guaranteed by CPU side method calls, and things work not necessarily because you've done the correct thing.
Intro To RAW/WAR Hazards
They are read-after-write and write-after-read hazards
You are now expected to be OK with shaders, draw calls, execution model, etc. It's recommended to design and implement your own pipeline that streamlines something with the techniques you learned.
Unit Test
It's recommended to set up an OpenGL test environment first so you'll be able to verify any kinds of ideas, edge cases, etc.
JUnit OpenGL Extension
Nsight Graphics
Minecraft 1.12.2 runs on the compat profile and Nsight works with the compat profile. You'll be able to use RenderDoc only if an emulation (emulate fixed-func pipeline with modern programmable pipeline) layer is done, but still... emulation emulates.
