Skip to content

Commit

Permalink
Add example using three-d
Browse files Browse the repository at this point in the history
https://github.com/asny/three-d recently merged a PR adding
`glow` support: asny/three-d#210
This means it is a prime candidate for embedding 3D painting inside
an eframe app.

There are currently a few kinks that need to be figured out:

When reusing the same three_d context over time (as one should),
we only get one frame of egui together with three_d, and then after that
a black screen with just the three_d painting on top.

I need to fix that before merging this PR.

`Shape` is `Send + Sync` and `three_d::Context` is not. This means
we cannot store a three_d context and send it to the `Shape::Callback`.

So we either need to recreate the three_d context each frame (obviously
a bad idea), or access it through a `thread_local` hack.
This PR adds both as examples, with a checkbox to switch.

We could consider making `Shape: !Send + !Sync`, but that would mean
`egui::Context` could not be `Send+Sync` either (because the egui
context stores shapes).

This is discussed in #1399
  • Loading branch information
emilk committed Mar 22, 2022
1 parent e5aeb16 commit ad0129d
Show file tree
Hide file tree
Showing 3 changed files with 610 additions and 1 deletion.
Loading

0 comments on commit ad0129d

Please sign in to comment.