blob: 859161685efd7ac6ce429fa55d1345143d13459e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
//====== Copyright Valve Corporation, All rights reserved. =======
#ifndef OPENVROVERLAYCONTROLLER_H
#define OPENVROVERLAYCONTROLLER_H
#ifdef _WIN32
#pragma once
#endif
#include "openvr.h"
#include <QtCore/QtCore>
// because of incompatibilities with QtOpenGL and GLEW we need to cherry pick includes
#include <QtGui/QVector2D>
#include <QtGui/QMatrix4x4>
#include <QtCore/QVector>
#include <QtGui/QVector2D>
#include <QtGui/QVector3D>
#include <QtGui/QOpenGLContext>
#include <QtGui/QOpenGLFramebufferObject>
#include <QtWidgets/QGraphicsScene>
#include <QtGui/QOffscreenSurface>
class COpenVROverlayController : public QObject
{
Q_OBJECT
typedef QObject BaseClass;
public:
static COpenVROverlayController *SharedInstance();
public:
COpenVROverlayController();
virtual ~COpenVROverlayController();
bool Init();
void Shutdown();
void EnableRestart();
bool BHMDAvailable();
vr::IVRSystem *GetVRSystem();
vr::HmdError GetLastHmdError();
QString GetVRDriverString();
QString GetVRDisplayString();
QString GetName() { return m_strName; }
void SetWidget( QWidget *pWidget );
public slots:
void OnSceneChanged( const QList<QRectF>& );
void OnTimeoutPumpEvents();
protected:
private:
bool ConnectToVRRuntime();
void DisconnectFromVRRuntime();
vr::TrackedDevicePose_t m_rTrackedDevicePose[ vr::k_unMaxTrackedDeviceCount ];
QString m_strVRDriver;
QString m_strVRDisplay;
QString m_strName;
vr::HmdError m_eLastHmdError;
private:
vr::HmdError m_eCompositorError;
vr::HmdError m_eOverlayError;
vr::Compositor_OverlaySettings m_overlaySettings;
vr::VROverlayHandle_t m_ulOverlayHandle;
vr::VROverlayHandle_t m_ulOverlayThumbnailHandle;
QOpenGLContext *m_pOpenGLContext;
QGraphicsScene *m_pScene;
QOpenGLFramebufferObject *m_pFbo;
QOffscreenSurface *m_pOffscreenSurface;
QTimer *m_pPumpEventsTimer;
// the widget we're drawing into the texture
QWidget *m_pWidget;
QPointF m_ptLastMouse;
Qt::MouseButtons m_lastMouseButtons;
};
#endif // OPENVROVERLAYCONTROLLER_H
|