mirror of
https://github.com/izzy2lost/ppsspp.git
synced 2026-03-10 12:43:04 -07:00
These naturally come in bunches on many platforms like Android, so lay some groundwork to also handle them in bunches to minimize locking in the future. Linux buildfix
65 lines
1.6 KiB
C
65 lines
1.6 KiB
C
#pragma once
|
|
|
|
#include <cstddef>
|
|
|
|
struct AxisInput;
|
|
struct TouchInput;
|
|
struct KeyInput;
|
|
|
|
enum VRCompatFlag {
|
|
//compatibility tweaks
|
|
VR_COMPAT_SKYPLANE,
|
|
|
|
//render state
|
|
VR_COMPAT_FBO_CLEAR,
|
|
|
|
//uniforms
|
|
VR_COMPAT_FOG_COLOR,
|
|
|
|
//end
|
|
VR_COMPAT_MAX
|
|
};
|
|
|
|
enum VRAppMode {
|
|
VR_CONTROLLER_MAPPING_MODE,
|
|
VR_DIALOG_MODE,
|
|
VR_GAME_MODE,
|
|
VR_MENU_MODE,
|
|
};
|
|
|
|
// VR app flow integration
|
|
bool IsVREnabled();
|
|
void InitVROnAndroid(void* vm, void* activity, const char* system, int version, const char* name);
|
|
void EnterVR(bool firstStart, void* vulkanContext);
|
|
void GetVRResolutionPerEye(int* width, int* height);
|
|
void SetVRCallbacks(void(*axis)(const AxisInput *axis, size_t count), bool(*key)(const KeyInput &key), void(*touch)(const TouchInput &touch));
|
|
|
|
// VR input integration
|
|
void SetVRAppMode(VRAppMode mode);
|
|
void UpdateVRInput(bool haptics, float dp_xscale, float dp_yscale);
|
|
bool UpdateVRAxis(const AxisInput &axis);
|
|
bool UpdateVRKeys(const KeyInput &key);
|
|
|
|
// VR games compatibility
|
|
void PreprocessStepVR(void* step);
|
|
void SetVRCompat(VRCompatFlag flag, long value);
|
|
|
|
// VR rendering integration
|
|
void* BindVRFramebuffer();
|
|
bool StartVRRender();
|
|
void FinishVRRender();
|
|
void PreVRFrameRender(int fboIndex);
|
|
void PostVRFrameRender();
|
|
int GetVRFBOIndex();
|
|
int GetVRPassesCount();
|
|
bool IsMultiviewSupported();
|
|
bool IsPassthroughSupported();
|
|
bool IsFlatVRGame();
|
|
bool IsFlatVRScene();
|
|
bool IsGameVRScene();
|
|
bool Is2DVRObject(float* projMatrix, bool ortho);
|
|
void UpdateVRParams(float* projMatrix);
|
|
void UpdateVRProjection(float* projMatrix, float* leftEye, float* rightEye);
|
|
void UpdateVRView(float* leftEye, float* rightEye);
|
|
void UpdateVRViewMatrices();
|