/scrapyard_engine

A small rendering engine written in Rust. The rendering engine is following the tutorial by Joey DeVries: https://learnopengl.com/Introduction. The goal is to take the lessons, implement them, and abstract them into reusable tools for later use.

Primary LanguageRustMIT LicenseMIT

Scrapyard Engine

This is a small rendering engine which i've decided to build out of pure curiosity. This is part of a process which I hope will lead to me learning to create a game engine from scratch.

The project is following the great OpenGL tutorial by Joey DeVries (https://learnopengl.com/Introduction), and attempts to follow his tutorials (add extend them) to best suit a game engine. This is largely experimental, and is a rugh interpretation of how I would think rendering would be tied into an engine.

Components

So far, the engine is comprised of a number of basic scripts and classes. These are broken down as follows:

  • SDL2_rust: I use SDL2 to handle input and manage windows.

  • gl_rs: A wrapper which allows the OpenGL API to be accessed through rust code.

Features

So far, the engine is incredibly rough. Its most significant classes are listed as follows:

  • application: handles the main event loop and calls the renderer's main functions.

  • render_application: handles basic GPU indexing, buffering and vertex array management.

  • renderer_tests: contains methods for rendering certain objects and shapes. These shapes

  • shader_program: combines multiple shaders into a single object which can be used to determine how an object is rendered.

  • shader: takes in a vertex or fragment shader and creates a new shader object containing that shader.

File Structure

[src]
     |-main.rs
     |-application.rs
     |
     |-[Render]
     |     |-render_application.rs
     |     |-render_tests.rs
     |     |-triangle.vert
     |     |-triangle.frag
     |     |
     |     |-[shader]
     |     |      |-shader.rs
     |     |      |-shader_program.rs
     |     |      |-shader_utilities.rs
     |     |-[practice]
     |     |      |-square.rs
     |     |      |-square_render.rs
     |     |      |-two_triangles_2.rs
     |     |      |-two_triangles_single_vertex.rs     

Test Update