A low-level OpenGL rendering engine built with Silk.NET, demonstrating manual GPU resource management for various material types through custom textures, shaders, and mesh pipelines.
This project takes a low-level approach to mesh creation and rendering — bypassing high-level abstractions to directly manage the OpenGL buffer pipeline. Each model showcases a different material type, with manually configured geometry buffers and shader programs.
The rendering pipeline is built on three core OpenGL buffer objects, each serving a distinct role in the vertex processing stage:
Stores raw vertex attribute data (positions, normals, texture coordinates) in GPU memory. For a vertex
The VBO holds a contiguous array of
where
Enables indexed rendering by storing index references into the VBO, eliminating redundant vertex data. For a triangle mesh with
This reduces memory usage from
Encapsulates the complete vertex attribute configuration — binding VBOs and EBOs together with attribute pointer definitions. Each attribute
where the offset for attribute
The VAO captures this entire state, allowing the full vertex specification to be restored with a single glBindVertexArray call.
Each material is driven by a dedicated GLSL shader program consisting of a vertex shader and a fragment shader, compiled and linked at runtime.
| Mode | Key | Action |
|---|---|---|
| Settings Mode | Space |
Enter observation mode |
| Observation Mode | W A S D + LMB |
Navigate the scene |
| Observation Mode | Space |
Return to settings mode |
- Silk.NET — Low-level .NET bindings for OpenGL
- GLSL — Custom vertex and fragment shaders
- C# — Application logic and buffer management





