feat: ui sprites + openxr skybox

This commit is contained in:
galister
2024-07-24 22:58:42 +09:00
parent 17addcde78
commit 7a6040bfee
30 changed files with 1926 additions and 1063 deletions

View File

@@ -9,7 +9,7 @@ use crate::state::AppState;
pub static ANCHOR_NAME: Lazy<Arc<str>> = Lazy::new(|| Arc::from("anchor"));
pub fn create_anchor<O>(state: &AppState) -> anyhow::Result<OverlayData<O>>
pub fn create_anchor<O>(state: &mut AppState) -> anyhow::Result<OverlayData<O>>
where
O: Default,
{

View File

@@ -12,7 +12,7 @@ use crate::{
const SETTINGS_NAME: &str = "settings";
pub fn create_custom(
state: &AppState,
state: &mut AppState,
name: Arc<str>,
) -> Option<(OverlayState, Box<dyn OverlayBackend>)> {
let config = if &*name == SETTINGS_NAME {

View File

@@ -10,7 +10,10 @@ use crate::{
overlay::{OverlayData, OverlayState},
},
config::{self, ConfigType},
gui::{color_parse, CanvasBuilder, Control, KeyCapType},
gui::{
canvas::{builder::CanvasBuilder, control::Control},
color_parse, KeyCapType,
},
hid::{
get_key_type, KeyModifier, KeyType, VirtualKey, XkbKeymap, ALT, CTRL, KEYS_TO_MODS, META,
NUM_LOCK, SHIFT, SUPER,

View File

@@ -214,7 +214,7 @@ impl ScreenPipeline {
];
let mouse_tex =
uploads.texture2d(4, 4, vulkano::format::Format::R8G8B8A8_UNORM, &mouse_bytes)?;
uploads.texture2d_raw(4, 4, vulkano::format::Format::R8G8B8A8_UNORM, &mouse_bytes)?;
self.mouse = Some(ImageView::new_default(mouse_tex)?);
Ok(())
}
@@ -507,8 +507,12 @@ impl OverlayRenderer for ScreenRenderer {
let data = unsafe { slice::from_raw_parts(map, len) };
let image =
upload.texture2d(frame.format.width, frame.format.height, format, data)?;
let image = upload.texture2d_raw(
frame.format.width,
frame.format.height,
format,
data,
)?;
upload.build_and_execute_now()?;
unsafe { libc::munmap(map as *mut _, len) };
@@ -526,8 +530,12 @@ impl OverlayRenderer for ScreenRenderer {
let data = unsafe { slice::from_raw_parts(frame.ptr as *const u8, frame.size) };
let image =
upload.texture2d(frame.format.width, frame.format.height, format, data)?;
let image = upload.texture2d_raw(
frame.format.width,
frame.format.height,
format,
data,
)?;
let pipeline = Some(match self.pipeline {
Some(ref mut p) => p,

View File

@@ -11,7 +11,7 @@ use crate::{
overlay::{OverlayBackend, OverlayState, RelativeTo},
task::TaskType,
},
gui::{color_parse, CanvasBuilder},
gui::{canvas::builder::CanvasBuilder, color_parse},
state::{AppState, LeftRight},
};

View File

@@ -4,15 +4,15 @@ use crate::{
backend::overlay::{ui_transform, OverlayData, OverlayState, RelativeTo},
config::{load_known_yaml, ConfigType},
gui::{
canvas::Canvas,
modular::{modular_canvas, ModularData, ModularUiConfig},
Canvas,
},
state::AppState,
};
pub const WATCH_NAME: &str = "watch";
pub fn create_watch<O>(state: &AppState) -> anyhow::Result<OverlayData<O>>
pub fn create_watch<O>(state: &mut AppState) -> anyhow::Result<OverlayData<O>>
where
O: Default,
{
@@ -40,7 +40,7 @@ where
pub fn create_watch_canvas(
config: Option<ModularUiConfig>,
state: &AppState,
state: &mut AppState,
) -> anyhow::Result<Canvas<(), ModularData>> {
let config = config.unwrap_or_else(|| load_known_yaml::<ModularUiConfig>(ConfigType::Watch));