#bindings #automatic #statically #built #linked #glutin #horde3-d

sys horde3d-sys

FFI bindings for Horde3D v1.0 Horde3D is automatically built and linked statically

2 releases

Uses old Rust 2015

0.1.1 Nov 28, 2017
0.1.0 Nov 21, 2017

#54 in Rendering engine

EPL-1.0 license

7MB
47K SLoC

C++ 39K SLoC // 0.2% comments C# 3.5K SLoC // 0.4% comments ShaderLab 2.5K SLoC // 0.1% comments Rust 1K SLoC .NET Resource 561 SLoC // 0.5% comments GLSL 508 SLoC // 0.3% comments JavaScript 112 SLoC // 0.2% comments Batch 22 SLoC Lua 16 SLoC // 0.3% comments

Low-level Horde3D bindings for Rust

See crates.io.

This crate exposes the raw Horde3D API, so the Horde3D manual applies.

Requirements

  • build-essentials (gcc, etc.)

Example

extern crate glutin;
extern crate horde3d_sys;

use glutin::GlContext;

fn main() {
    let mut events_loop = glutin::EventsLoop::new();
    let window = glutin::WindowBuilder::new()
        .with_title("Dungeon")
        .with_dimensions(1024, 768);
    let context = glutin::ContextBuilder::new()
        .with_vsync(true)
        .with_gl(glutin::GlRequest::Latest)
        .with_gl_profile(glutin::GlProfile::Core);
    let gl_window = glutin::GlWindow::new(window, context, &events_loop).unwrap();

    unsafe {
        gl_window.context().make_current().unwrap();
        eprintln!("{:?}", horde3d_sys::h3dInit(horde3d_sys::H3DRenderDevice::OpenGL4));
    }

    let mut running = true;
    while running {
        events_loop.poll_events(|event| {
            match event {
                glutin::Event::WindowEvent{ event, .. } => match event {
                    glutin::WindowEvent::Closed => running = false,
                    glutin::WindowEvent::Resized(w, h) => gl_window.resize(w, h),
                    _ => ()
                },
                _ => ()
            }
        });

        gl_window.swap_buffers().unwrap();
    }

    unsafe {
        horde3d_sys::h3dRelease();
    }
}

No runtime deps