mirror of
https://github.com/DrBeef/QuestZDoom.git
synced 2025-05-31 00:30:59 +00:00
- moved the set refresh rate execution on initialization instead of setting it on every frame (dynamic throttling should happen)
- check if passed refresh rate is supported by the device before set it - added public QzDoom_SetRefreshRate to change refresh rate in game
This commit is contained in:
parent
1dd0e88cff
commit
3b4e8ce848
2 changed files with 29 additions and 6 deletions
|
@ -701,7 +701,7 @@ void ovrRenderer_Create( int width, int height, ovrRenderer * renderer, const ov
|
|||
renderer->NumBuffers = VRAPI_FRAME_LAYER_EYE_MAX;
|
||||
|
||||
//Now using a symmetrical render target, based on the horizontal FOV
|
||||
QzDoom_GetFOV();
|
||||
//QzDoom_GetFOV();
|
||||
|
||||
// Create the render Textures.
|
||||
for ( int eye = 0; eye < VRAPI_FRAME_LAYER_EYE_MAX; eye++ )
|
||||
|
@ -1335,6 +1335,29 @@ int QzDoom_GetRefresh()
|
|||
return vrapi_GetSystemPropertyInt(&gAppState.Java, VRAPI_SYS_PROP_DISPLAY_REFRESH_RATE);
|
||||
}
|
||||
|
||||
int QzDoom_SetRefreshRate(int refreshRate)
|
||||
{
|
||||
return vrapi_SetDisplayRefreshRate(gAppState.Ovr, (float)refreshRate);
|
||||
}
|
||||
|
||||
bool QzDoom_IsRefreshSupported(int refreshRate)
|
||||
{
|
||||
int size = vrapi_GetSystemPropertyInt(&gAppState.Java, VRAPI_SYS_PROP_NUM_SUPPORTED_DISPLAY_REFRESH_RATES);
|
||||
float supported_rates[size];
|
||||
int elements = vrapi_GetSystemPropertyFloatArray(&gAppState.Java,
|
||||
VRAPI_SYS_PROP_SUPPORTED_DISPLAY_REFRESH_RATES,
|
||||
supported_rates, size);
|
||||
for (int i = 0; i < size; i++)
|
||||
{
|
||||
if (refreshRate == (int)supported_rates[i])
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
ALOGV("Refresh rate not supported: %dHz", refreshRate);
|
||||
return false;
|
||||
}
|
||||
|
||||
float QzDoom_GetFOV()
|
||||
{
|
||||
vrFOV = vrapi_GetSystemPropertyInt(&gAppState.Java, VRAPI_SYS_PROP_SUGGESTED_EYE_FOV_DEGREES_Y);
|
||||
|
@ -1499,6 +1522,10 @@ void * AppThreadFunction(void * parm ) {
|
|||
return NULL;
|
||||
}
|
||||
|
||||
if (QzDoom_IsRefreshSupported(DISPLAY_REFRESH)) {
|
||||
QzDoom_SetRefreshRate(DISPLAY_REFRESH);
|
||||
}
|
||||
|
||||
// Create the scene if not yet created.
|
||||
ovrScene_Create( m_width, m_height, &gAppState.Scene, &java );
|
||||
|
||||
|
@ -1530,11 +1557,6 @@ void QzDoom_FrameSetup()
|
|||
{
|
||||
//Use floor based tracking space
|
||||
vrapi_SetTrackingSpace(gAppState.Ovr, VRAPI_TRACKING_SPACE_LOCAL_FLOOR);
|
||||
|
||||
//Set the screen refresh - repeat this every frame so VrApi doesn't try changing it on us
|
||||
if (DISPLAY_REFRESH != -1) {
|
||||
vrapi_SetDisplayRefreshRate(gAppState.Ovr, DISPLAY_REFRESH);
|
||||
}
|
||||
}
|
||||
|
||||
void QzDoom_processHaptics() {//Handle haptics
|
||||
|
|
|
@ -92,6 +92,7 @@ void QzDoom_setUseScreenLayer(bool use);
|
|||
void QzDoom_processHaptics();
|
||||
void QzDoom_getHMDOrientation(ovrTracking2 *tracking);
|
||||
void QzDoom_getTrackedRemotesOrientation(int vr_control_scheme);
|
||||
int QzDoom_SetRefreshRate(int refreshRate);
|
||||
|
||||
void QzDoom_HapticEvent(const char* event, int position, int intensity, float angle, float yHeight );
|
||||
void QzDoom_HapticEnable();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue