Simplify Oculus example...

...to align it with standard raylib code. Final goal would be having the
same code work for every platform with no changes...
This commit is contained in:
Ray 2016-06-21 08:59:29 +02:00
parent b01f5ff6a7
commit 6062201e8f
4 changed files with 16 additions and 14 deletions

View File

@ -52,14 +52,9 @@ int main()
ClearBackground(RAYWHITE); ClearBackground(RAYWHITE);
Begin3dMode(camera); Begin3dMode(camera);
//BeginOculusDrawing(camera); // Add it to Begin3dMode() ?
for (int eye = 0; eye < 2; eye++) for (int eye = 0; eye < 2; eye++)
{ {
// TODO: Probably projection and view matrices could be created here...
// ...without the need to create it internally through Begin3dMode()
//Begin3dMode(camera);
SetOculusView(eye); SetOculusView(eye);
DrawCube(cubePosition, 2.0f, 2.0f, 2.0f, RED); DrawCube(cubePosition, 2.0f, 2.0f, 2.0f, RED);
@ -67,15 +62,10 @@ int main()
DrawGrid(10, 1.0f); DrawGrid(10, 1.0f);
// TODO: Call internal buffers drawing directly (rlglDraw()) and...
// ...reset internal matrices, instead of letting End3dMode() do that
//End3dMode();
DrawDefaultBuffers(); // Process internal dynamic buffers DrawDefaultBuffers(); // Process internal dynamic buffers
} }
End3dMode(); End3dMode();
//EndOculusDrawing(); // Add it to End3dMode() ?
EndDrawing(); EndDrawing();
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------

View File

@ -607,13 +607,14 @@ void Begin3dMode(Camera camera)
rlEnableDepthTest(); // Enable DEPTH_TEST for 3D rlEnableDepthTest(); // Enable DEPTH_TEST for 3D
//if (vrEnabled) BeginVrMode(); if (VrEnabled()) BeginOculusDrawing();
} }
// Ends 3D mode and returns to default 2D orthographic mode // Ends 3D mode and returns to default 2D orthographic mode
void End3dMode(void) void End3dMode(void)
{ {
rlglDraw(); // Draw Buffers (Only OpenGL 3+ and ES2) if (VrEnabled()) EndOculusDrawing();
else rlglDraw(); // Draw Buffers (Only OpenGL 3+ and ES2)
rlMatrixMode(RL_PROJECTION); // Switch to projection matrix rlMatrixMode(RL_PROJECTION); // Switch to projection matrix
rlPopMatrix(); // Restore previous matrix (PROJECTION) from matrix stack rlPopMatrix(); // Restore previous matrix (PROJECTION) from matrix stack

View File

@ -76,7 +76,7 @@
#include "standard_shader.h" // Standard shader to embed #include "standard_shader.h" // Standard shader to embed
#endif #endif
#define RLGL_OCULUS_SUPPORT // Enable Oculus Rift code //#define RLGL_OCULUS_SUPPORT // Enable Oculus Rift code
#if defined(RLGL_OCULUS_SUPPORT) #if defined(RLGL_OCULUS_SUPPORT)
#include "external/OculusSDK/LibOVR/Include/OVR_CAPI_GL.h" // Oculus SDK for OpenGL #include "external/OculusSDK/LibOVR/Include/OVR_CAPI_GL.h" // Oculus SDK for OpenGL
#endif #endif
@ -268,6 +268,7 @@ static unsigned int frameIndex = 0; // Oculus frames counter, used to discar
#endif #endif
static bool vrSimulator = false; // VR simulator (stereo rendering on window, without vr device) static bool vrSimulator = false; // VR simulator (stereo rendering on window, without vr device)
static bool vrEnabled = false; // VR enabled flag (required by core module)
// Compressed textures support flags // Compressed textures support flags
static bool texCompDXTSupported = false; // DDS texture compression support static bool texCompDXTSupported = false; // DDS texture compression support
@ -2523,6 +2524,7 @@ void InitOculusDevice(void)
} }
#else #else
vrSimulator = true; vrSimulator = true;
vrEnabled = true;
#endif #endif
if (vrSimulator) if (vrSimulator)
@ -2548,6 +2550,14 @@ void CloseOculusDevice(void)
// TODO: Unload stereo framebuffer and texture // TODO: Unload stereo framebuffer and texture
// TODO: Unload oculus-distortion shader // TODO: Unload oculus-distortion shader
} }
vrEnabled = false;
}
// Track stereoscopic rendering
bool VrEnabled(void)
{
return vrEnabled;
} }
// Update Oculus Rift tracking (position and orientation) // Update Oculus Rift tracking (position and orientation)

View File

@ -362,6 +362,7 @@ void UpdateOculusTracking(void); // Update Oculus Rift tracking (posi
void SetOculusView(int eye); // Set internal projection and modelview matrix depending on eyes tracking data void SetOculusView(int eye); // Set internal projection and modelview matrix depending on eyes tracking data
void BeginOculusDrawing(void); // Begin Oculus drawing configuration void BeginOculusDrawing(void); // Begin Oculus drawing configuration
void EndOculusDrawing(void); // End Oculus drawing process (and desktop mirror) void EndOculusDrawing(void); // End Oculus drawing process (and desktop mirror)
bool VrEnabled(void); // Track stereoscopic rendering
#ifdef __cplusplus #ifdef __cplusplus
} }