Fixed testing example add minor functionality

This commit is contained in:
Rene Eichhorn
2017-05-14 16:59:51 +02:00
parent d3b6744618
commit 394d39c437
3 changed files with 73 additions and 23 deletions

View File

@ -16,44 +16,57 @@ fn print_matrix_4x3(offset: u32, mat: [[f32; 4]; 3]) {
}
fn main() {
let system = match openvr::init() {
let context = match openvr::init(openvr::ApplicationType::Other) {
Ok(ivr) => ivr,
Err(err) => {
println!("Failed to create IVR subsystem {:?}", err);
println!("Failed to initialize openvr {:?}", err);
return;
}
};
println!("IVRSystem was created");
println!("OpenVR was initialized successfully..");
println!("\trecommended size: {:?}", system.recommended_render_target_size());
println!("\tvsync: {:?}", system.time_since_last_vsync());
let system = match context.system() {
Ok(sys) => sys,
Err(err) => {
println!("Failed to get system interface {:?}", err);
return;
}
};
print!("\tprojection matrix left ");
println!("\tRecommended size: {:?}", system.recommended_render_target_size());
println!("\tVSync: {:?}", system.time_since_last_vsync());
print!("\tProjection matrix left ");
print_matrix_4x4(31, system.projection_matrix(openvr::Eye::Left, 0.1, 100.));
print!("\tprojection matrix right ");
print!("\tProjection matrix right ");
print_matrix_4x4(31, system.projection_matrix(openvr::Eye::Right, 0.1, 100.));
print!("\teye_to_head ");
print!("\tEye_to_head ");
print_matrix_4x3(8+12, system.eye_to_head_transform(openvr::Eye::Left));
print!("\tposes ");
print_matrix_4x3(8+6, system.tracked_devices(0.).as_slice()[0].to_device);
print!("\tPoses ");
let poses = system.device_to_absolute_tracking_pose(openvr::TrackingUniverseOrigin::RawAndUncalibrated, 0.0);
for pose in poses.iter() {
print_matrix_4x3(8+6, *pose.device_to_absolute_tracking());
break;
}
println!("Distortion example");
println!("\tDistortion example");
for u in 0..2 {
for v in 0..2 {
let pos = system.compute_distortion(
openvr::Eye::Left,
u as f32 / 4.,
v as f32 / 4.,
);
print!("\t({:2.4}, {:2.4}) ", pos.red[0], pos.red[1]);
).unwrap();
print!("\t\t({:2.4}, {:2.4}) ", pos.red[0], pos.red[1]);
}
println!("");
}
let ext = match openvr::extended_display() {
/*
let ext = match context.extended_display() {
Ok(ext) => ext,
Err(err) => {
println!("Failed to create IVRExtendedDisplay subsystem {:?}", err);
@ -61,10 +74,12 @@ fn main() {
}
};
println!("\nIVRExtendedDisplay was created");
println!("\tbounds: {:?}", ext.window_bounds());
println!("\teye output: {:?} {:?}", ext.eye_viewport(openvr::Eye::Left), ext.eye_viewport(openvr::Eye::Right));
let comp = match openvr::compositor() {
println!("\tBounds: {:?}", ext.window_bounds());
println!("\tEye output: {:?} {:?}", ext.eye_viewport(openvr::Eye::Left), ext.eye_viewport(openvr::Eye::Right));
*/
let comp = match context.compositor() {
Ok(ext) => ext,
Err(err) => {
println!("Failed to create IVRCompositor subsystem {:?}", err);
@ -73,10 +88,14 @@ fn main() {
};
println!("\nIVRCompositor was created");
println!("\tis fullscreen = {}", comp.is_fullscreen());
println!("\tcan render scene = {}", comp.can_render_scene());
println!("\tIs fullscreen = {}", comp.is_fullscreen());
println!("\tInstance Extensions:");
for ext in comp.vulkan_instance_extensions_required() {
println!("\t\t{:?}", ext);
}
let model = match openvr::render_models() {
/*
let model = match context.render_models() {
Ok(ext) => ext,
Err(err) => {
println!("Failed to create IVRRenderModels subsystem {:?}", err);
@ -88,9 +107,7 @@ fn main() {
for i in 0..model.get_count() {
println!("\t{}", model.get_name(i));
}
*/
openvr::shutdown();
println!("Done! \\o/");
}