FTEQW
Documentation of the FTE engine source tree.
vr.h
Go to the documentation of this file.
1#include "merged.h"
2typedef struct vrsetup_s
3{
4 //engine-set
5 size_t structsize;
6 enum
7 {
8 VR_HEADLESS, //not to be confused with decapitation
11// VR_ANDROID_EGL,
13 VR_VULKAN, //vulkan has no platform variation
14 VR_D3D11, //d3d11 only works on windows, so no platform variation
15 } vrplatform; //the type of renderer/args getting inited. abort if unknown.
16 void *userctx; //for use in callbacks.
17 qboolean (*createinstance)(struct vrsetup_s *, char *instanceextensions, void *result); //used by vulkan, can be null for other renderers
18
19 //vr-set (by preinit)
20 struct
21 {
24 unsigned int deviceid[2];
26
27
28 //engine-set (for full init)
29 //this stuff is intentionally at the end
30 union {
31 struct
32 {
33 void *display;
36 unsigned long drawable; //really int32
39
40 struct
41 {
42 void *(*getprocaddr)(const char *name);
44 void *eglconfig;
46 } egl;
47
48 struct
49 {
50 void *hdc;
51 void *hglrc;
52 } wgl;
53
54 struct
55 {
56 void *device;
57 } d3d;
58
59 struct
60 { //these are ALWAYS pointers in vulkan (annoyingly unlike many of its typedefs).
61 void *instance;
63 void *device;
64 unsigned int queuefamily;
65 unsigned int queueindex;
66 } vk;
67 };
69
70//interface registered by plugins for VR stuff.
71typedef struct plugvrfuncs_s
72{
73 const char *description;
74 qboolean (*Prepare) (vrsetup_t *setupinfo); //called before graphics context init
75 qboolean (*Init) (vrsetup_t *setupinfo, rendererstate_t *info); //called after graphics context init
76 qboolean (*SyncFrame)(double *frametime); //called in the client's main loop, to block/tweak frame times. True means the game should render as fast as possible.
77 qboolean (*Render) (void(*rendereye)(texid_t tex, vec4_t fovoverride, vec3_t angorg[2]));
79#define plugvrfuncs_name "VR"
qboolean
Definition: api_menu.h:34
vec_t vec3_t[3]
Definition: api_menu.h:40
vec_t vec4_t[4]
Definition: api_menu.h:41
void(QDECL *vgui_frame)(void)
dVector3 result
Definition: com_phys_ode.c:519
GLuint GLcharARB * name
Definition: glquake.h:155
float frametime
Definition: pmove.c:31
texid_t tex
Definition: r_2d.c:52
Definition: merged.h:238
Definition: vr.h:72
qboolean(* Init)(vrsetup_t *setupinfo, rendererstate_t *info)
Definition: vr.h:75
qboolean(* SyncFrame)(double *frametime)
Definition: vr.h:76
void(* Shutdown)(void)
Definition: vr.h:78
qboolean(* Prepare)(vrsetup_t *setupinfo)
Definition: vr.h:74
const char * description
Definition: vr.h:73
qboolean(* Render)(void(*rendereye)(texid_t tex, vec4_t fovoverride, vec3_t angorg[2]))
Definition: vr.h:77
Definition: vid.h:42
Definition: vr.h:3
unsigned int queueindex
Definition: vr.h:65
qboolean(* createinstance)(struct vrsetup_s *, char *instanceextensions, void *result)
Definition: vr.h:17
@ VR_D3D11
Definition: vr.h:14
@ VR_VULKAN
Definition: vr.h:13
@ VR_EGL
Definition: vr.h:9
@ VR_HEADLESS
Definition: vr.h:8
@ VR_WIN_WGL
Definition: vr.h:12
@ VR_X11_GLX
Definition: vr.h:10
void * userctx
Definition: vr.h:16
enum vrsetup_s::@138 vrplatform
struct vrsetup_s::@139 minver
void * hdc
Definition: vr.h:50
unsigned long drawable
Definition: vr.h:36
struct vrsetup_s::@140::@145 wgl
unsigned int deviceid[2]
Definition: vr.h:24
char * deviceextensions
Definition: vr.h:25
int major
Definition: vr.h:22
size_t structsize
Definition: vr.h:5
struct vrsetup_s::@140::@144 egl
struct vrsetup_s::@139 maxver
void * eglcontext
Definition: vr.h:45
void * glxcontext
Definition: vr.h:37
void * egldisplay
Definition: vr.h:43
void * instance
Definition: vr.h:61
struct vrsetup_s::@140::@143 x11_glx
struct vrsetup_s::@140::@147 vk
void * eglconfig
Definition: vr.h:44
unsigned int queuefamily
Definition: vr.h:64
int minor
Definition: vr.h:22
void * hglrc
Definition: vr.h:51
void * physicaldevice
Definition: vr.h:62
void * display
Definition: vr.h:33
struct vrsetup_s::@140::@146 d3d
void * glxfbconfig
Definition: vr.h:35
void * device
Definition: vr.h:56
int visualid
Definition: vr.h:34
struct vrsetup_s vrsetup_t
struct plugvrfuncs_s plugvrfuncs_t