fix stroke preview, use hmd pose instead of eye, fix vr fullscreen mode

This commit is contained in:
2018-10-28 23:31:22 +01:00
parent b366d6b61f
commit a64e2fa8fb
8 changed files with 30 additions and 14 deletions

View File

@@ -1,7 +1,7 @@
#include "pch.h"
#include "app.h"
void App::vr_draw(const glm::mat4& proj, const glm::mat4& camera)
void App::vr_draw(const glm::mat4& proj, const glm::mat4& camera, const glm::mat4& pose)
{
using namespace ui;
@@ -14,7 +14,7 @@ void App::vr_draw(const glm::mat4& proj, const glm::mat4& camera)
// glm::scale(glm::vec3(sz, 1));
//glm::extractEulerAngleXYZ(camera, vr_rot.y, vr_rot.x, vr_rot.z);
vr_rot = camera;
vr_rot = pose;
sampler.bind(0);
sampler.bind(1);
@@ -141,19 +141,32 @@ void App::vr_draw(const glm::mat4& proj, const glm::mat4& camera)
float tan_fov = glm::tan(glm::radians(canvas->m_canvas->m_cam_fov / 2.f));
glm::vec3 aspect = { (float)uirtt.getWidth() / (float)uirtt.getHeight(), 1.f, 1.f };
// draw the 2D UI
// draw the frame
{
auto plane_mvp_z = proj * camera *
auto mvp = proj * camera *
glm::scale(glm::vec3(100)) *
glm::transpose(canvas->m_canvas->m_cam_rot) *
glm::translate(glm::vec3(0, 0, -1)) *
glm::scale(aspect * tan_fov);
ui::ShaderManager::use(kShader::Color);
ui::ShaderManager::u_vec4(kShaderUniform::Col, { 0, 0, 0, 1 });
ui::ShaderManager::u_mat4(kShaderUniform::MVP, mvp);
m_face_plane.draw_stroke();
}
// draw the 2D UI
if (ui_visible)
{
auto mvp = proj * camera *
glm::scale(glm::vec3(100)) *
//glm::eulerAngleYXZ(yaw, pitch, roll) *
//canvas->m_canvas->m_plane_transform[plane_index] *
glm::transpose(canvas->m_canvas->m_cam_rot) *
glm::translate(glm::vec3(0, 0, -1)) *
glm::scale(aspect * tan_fov);
sampler.bind(0);
ui::ShaderManager::use(kShader::Texture);
ui::ShaderManager::u_int(kShaderUniform::Tex, 0);
ui::ShaderManager::u_mat4(kShaderUniform::MVP, plane_mvp_z);
ui::ShaderManager::u_mat4(kShaderUniform::MVP, mvp);
glActiveTexture(GL_TEXTURE0);
uirtt.bindTexture();
m_face_plane.draw_fill();