sebcrozet/kiss3d

draw_lines example error on Mac OS

dsillman2000 opened this issue · 1 comments

As per Issue #307,

          I'm experiencing the same error.
thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `1281`,
 right: `0`', /Users/dsillman/.cargo/registry/src/github.com-1ecc6299db9ec823/kiss3d-0.35.0/src/renderer/line_renderer.rs:89:9
stack backtrace:
   0: rust_begin_unwind
             at /rustc/90743e7298aca107ddaa0c202a4d3604e29bfeb6/library/std/src/panicking.rs:575:5
   1: core::panicking::panic_fmt
             at /rustc/90743e7298aca107ddaa0c202a4d3604e29bfeb6/library/core/src/panicking.rs:65:14
   2: core::panicking::assert_failed_inner
   3: core::panicking::assert_failed
             at /rustc/90743e7298aca107ddaa0c202a4d3604e29bfeb6/library/core/src/panicking.rs:203:5
   4: <kiss3d::renderer::line_renderer::LineRenderer as kiss3d::renderer::renderer::Renderer>::render
             at /Users/dsillman/.cargo/registry/src/github.com-1ecc6299db9ec823/kiss3d-0.35.0/src/renderer/line_renderer.rs:89:9
   5: kiss3d::window::window::Window::render_scene
             at /Users/dsillman/.cargo/registry/src/github.com-1ecc6299db9ec823/kiss3d-0.35.0/src/window/window.rs:1183:9
   6: kiss3d::window::window::Window::render_single_frame
             at /Users/dsillman/.cargo/registry/src/github.com-1ecc6299db9ec823/kiss3d-0.35.0/src/window/window.rs:1114:13
   7: kiss3d::window::window::Window::do_render_with
             at /Users/dsillman/.cargo/registry/src/github.com-1ecc6299db9ec823/kiss3d-0.35.0/src/window/window.rs:1074:29
   8: kiss3d::window::window::Window::render_with
             at /Users/dsillman/.cargo/registry/src/github.com-1ecc6299db9ec823/kiss3d-0.35.0/src/window/window.rs:1044:9
   9: kiss3d::window::window::Window::render
             at /Users/dsillman/.cargo/registry/src/github.com-1ecc6299db9ec823/kiss3d-0.35.0/src/window/window.rs:977:9
  10: shape_log_viewer::main
             at ./src/main.rs:13:11
  11: core::ops::function::FnOnce::call_once
             at /rustc/90743e7298aca107ddaa0c202a4d3604e29bfeb6/library/core/src/ops/function.rs:251:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

I'm using version 0.35.0 of kiss3d. I'm using rustc 1.66.1. I'm on Mac OS Monterey 12.6.1 (apple M1 chip, Macbook Pro 2022). Any idea what might be causing this @donkeyteethUX ?

Originally posted by @dsillman2000 in #307 (comment)

The example is

extern crate kiss3d;

use kiss3d::nalgebra as na;
use kiss3d::light::Light;
use kiss3d::window::Window;
use na::{Point2, Point3};

fn main() {
    let mut window = Window::new("Kiss3d: lines");

    window.set_light(Light::StickToCamera);

    while window.render() {
        let a = Point3::new(-0.1, -0.1, 0.0);
        let b = Point3::new(0.0, 0.1, 0.0);
        let c = Point3::new(0.1, -0.1, 0.0);

        window.set_line_width(2.0);
        window.draw_line(&a, &b, &Point3::new(1.0, 0.0, 0.0));
        window.draw_line(&b, &c, &Point3::new(0.0, 1.0, 0.0));
        window.draw_line(&c, &a, &Point3::new(0.0, 0.0, 1.0));

        window.draw_planar_line(
            &Point2::new(-100.0, -200.0),
            &Point2::new(100.0, -200.0),
            &Point3::new(1.0, 1.0, 1.0),
        );
    }
}

Using the latest release (0.35) on macOS I can reproduce this error. It is caused by something in kiss3d when calling window.set_line_width. If you don't call this method, everything works (for me at least). Because I'm not relying on the lines being super visible, I just turn off calls to set_lines_width when under macOS:

#[cfg(not(target_os = "macos"))]
window.set_line_width(1.0);

This is also relevant to specific objects, e.g.

let ball = ncollide3d::procedural::sphere(2.0, 20, 20, false);
let mut ball = window.add_trimesh(ball, Vector3::from_element(1.0));
ball.set_color(0.7, 0.7, 0.7);

#[cfg(not(target_os = "macos"))]
ball.set_lines_width(1.0);