mirror of https://github.com/bjornbytes/lovr.git
lovr.headset.getDisplayFrequency;
This commit is contained in:
parent
4f7bb9e53e
commit
7ca23bc58a
|
@ -147,6 +147,16 @@ static int l_lovrHeadsetGetDisplayDimensions(lua_State* L) {
|
|||
return 2;
|
||||
}
|
||||
|
||||
static int l_lovrHeadsetGetDisplayFrequency(lua_State* L) {
|
||||
float frequency = lovrHeadsetDriver->getDisplayFrequency ? lovrHeadsetDriver->getDisplayFrequency() : 0.f;
|
||||
if (frequency == 0.f) {
|
||||
lua_pushnil(L);
|
||||
} else {
|
||||
lua_pushnumber(L, frequency);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int l_lovrHeadsetGetDisplayMask(lua_State* L) {
|
||||
uint32_t count;
|
||||
const float* points = lovrHeadsetDriver->getDisplayMask(&count);
|
||||
|
@ -537,6 +547,7 @@ static const luaL_Reg lovrHeadset[] = {
|
|||
{ "getDisplayWidth", l_lovrHeadsetGetDisplayWidth },
|
||||
{ "getDisplayHeight", l_lovrHeadsetGetDisplayHeight },
|
||||
{ "getDisplayDimensions", l_lovrHeadsetGetDisplayDimensions },
|
||||
{ "getDisplayFrequency", l_lovrHeadsetGetDisplayFrequency },
|
||||
{ "getDisplayMask", l_lovrHeadsetGetDisplayMask },
|
||||
{ "getClipDistance", l_lovrHeadsetGetClipDistance },
|
||||
{ "setClipDistance", l_lovrHeadsetSetClipDistance },
|
||||
|
|
|
@ -59,6 +59,7 @@ typedef struct HeadsetInterface {
|
|||
bool (*getName)(char* name, size_t length);
|
||||
HeadsetOrigin (*getOriginType)(void);
|
||||
void (*getDisplayDimensions)(uint32_t* width, uint32_t* height);
|
||||
float (*getDisplayFrequency)(void);
|
||||
const float* (*getDisplayMask)(uint32_t* count);
|
||||
double (*getDisplayTime)(void);
|
||||
void (*getClipDistance)(float* clipNear, float* clipFar);
|
||||
|
|
|
@ -207,6 +207,10 @@ static void openvr_getDisplayDimensions(uint32_t* width, uint32_t* height) {
|
|||
state.system->GetRecommendedRenderTargetSize(width, height);
|
||||
}
|
||||
|
||||
static float openvr_getDisplayFrequency() {
|
||||
return state.system->GetFloatTrackedDeviceProperty(HEADSET, ETrackedDeviceProperty_Prop_DisplayFrequency_Float, NULL);
|
||||
}
|
||||
|
||||
static const float* openvr_getDisplayMask(uint32_t* count) {
|
||||
struct HiddenAreaMesh_t hiddenAreaMesh = state.system->GetHiddenAreaMesh(EVREye_Eye_Left, EHiddenAreaMeshType_k_eHiddenAreaMesh_Standard);
|
||||
|
||||
|
@ -231,7 +235,7 @@ static double openvr_getDisplayTime(void) {
|
|||
float secondsSinceVsync;
|
||||
state.system->GetTimeSinceLastVsync(&secondsSinceVsync, NULL);
|
||||
|
||||
float frequency = state.system->GetFloatTrackedDeviceProperty(HEADSET, ETrackedDeviceProperty_Prop_DisplayFrequency_Float, NULL);
|
||||
float frequency = openvr_getDisplayFrequency();
|
||||
float frameDuration = 1.f / frequency;
|
||||
float vsyncToPhotons = state.system->GetFloatTrackedDeviceProperty(HEADSET, ETrackedDeviceProperty_Prop_SecondsFromVsyncToPhotons_Float, NULL);
|
||||
|
||||
|
@ -533,6 +537,7 @@ HeadsetInterface lovrHeadsetOpenVRDriver = {
|
|||
.getName = openvr_getName,
|
||||
.getOriginType = openvr_getOriginType,
|
||||
.getDisplayDimensions = openvr_getDisplayDimensions,
|
||||
.getDisplayFrequency = openvr_getDisplayFrequency,
|
||||
.getDisplayMask = openvr_getDisplayMask,
|
||||
.getDisplayTime = openvr_getDisplayTime,
|
||||
.getClipDistance = openvr_getClipDistance,
|
||||
|
|
Loading…
Reference in New Issue