Initial commit - some engine bugs stopping compiling

This commit is contained in:
Will
2026-03-29 15:52:42 +01:00
commit 3d573a200e
361 changed files with 332759 additions and 0 deletions

View File

@@ -0,0 +1,8 @@
[package]
name = "gl-glfw"
version = "0.1.0"
[dependencies]
glfw = "0.37.0"
glad-gl = { path = "./build/glad-gl" }

View File

@@ -0,0 +1,33 @@
Example: gl-glfw
================
This is basic example showcasing `glad-gl` in combination with
[`glfw`](https://crates.io/crates/glfw).
To run the example use the following command:
```sh
./init.sh && cargo run
```
The `init.sh` script is just a small utility used to generate
the `glad-gl` crate into the `build/` directory. The `Cargo.toml`
references the dependency using:
```toml
[dependencies]
glad-gl = { path = "./build/glad-gl" }
```
This example is the basic example of the
[glfw crate](https://crates.io/crates/glfw) with some
OpenGL instructions added and just one additional line
to initialize `glad`:
```rust
gl::load(|e| glfw.get_proc_address_raw(e) as *const std::os::raw::c_void);
```
That's all that is needed to initialize and use OpenGL using `glad`!

View File

@@ -0,0 +1,9 @@
#!/bin/sh
BASE_PATH="$(dirname $(realpath $0))"
cd "${BASE_PATH}/../../../"
python -m glad --out-path "${BASE_PATH}/build" --extensions="" --api="gl:core=3.3" rust

View File

@@ -0,0 +1,40 @@
extern crate glfw;
extern crate glad_gl;
use glfw::{Action, Context, Key};
use glad_gl::gl;
fn main() {
let mut glfw = glfw::init(glfw::FAIL_ON_ERRORS).unwrap();
let (mut window, events) = glfw.create_window(300, 300, "[glad] Rust - OpenGL with GLFW", glfw::WindowMode::Windowed)
.expect("Failed to create GLFW window.");
window.set_key_polling(true);
window.make_current();
gl::load(|e| glfw.get_proc_address_raw(e) as *const std::os::raw::c_void);
while !window.should_close() {
glfw.poll_events();
for (_, event) in glfw::flush_messages(&events) {
handle_window_event(&mut window, event);
}
unsafe {
gl::ClearColor(0.7, 0.9, 0.1, 1.0);
gl::Clear(gl::COLOR_BUFFER_BIT);
}
window.swap_buffers();
}
}
fn handle_window_event(window: &mut glfw::Window, event: glfw::WindowEvent) {
match event {
glfw::WindowEvent::Key(Key::Escape, _, Action::Press, _) => {
window.set_should_close(true)
}
_ => {}
}
}