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:
parent
b01f5ff6a7
commit
6062201e8f
@ -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();
|
||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
|
@ -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
|
||||||
|
12
src/rlgl.c
12
src/rlgl.c
@ -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)
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user