|
|
@ -596,7 +596,7 @@ RLAPI void rlClearScreenBuffers(void); // Clear used screen buf |
|
|
|
RLAPI void rlCheckErrors(void); // Check and log OpenGL error codes |
|
|
|
RLAPI void rlSetBlendMode(int mode); // Set blending mode |
|
|
|
RLAPI void rlSetBlendFactors(int glSrcFactor, int glDstFactor, int glEquation); // Set blending mode factor and equation (using OpenGL factors) |
|
|
|
RLAPI void rlSetBlendFactorsSeparate(int srgb, int drgb, int salpha, int dalpha, int ergb, int ealpha); // Set blending mode factors and equations separately (using OpenGL factors) |
|
|
|
RLAPI void rlSetBlendFactorsSeparate(int glSrcRGB, int glDstRGB, int glSrcAlpha, int glDstAlpha, int glEqRGB, int glEqAlpha); // Set blending mode factors and equations separately (using OpenGL factors) |
|
|
|
|
|
|
|
//------------------------------------------------------------------------------------ |
|
|
|
// Functions Declaration - rlgl functionality |
|
|
@ -928,6 +928,7 @@ typedef struct rlglData { |
|
|
|
Matrix projectionStereo[2]; // VR stereo rendering eyes projection matrices |
|
|
|
Matrix viewOffsetStereo[2]; // VR stereo rendering eyes view offset matrices |
|
|
|
|
|
|
|
// Blending variables |
|
|
|
int currentBlendMode; // Blending mode active |
|
|
|
int glBlendSrcFactor; // Blending source factor |
|
|
|
int glBlendDstFactor; // Blending destination factor |
|
|
@ -1813,14 +1814,15 @@ void rlSetBlendMode(int mode) |
|
|
|
{ |
|
|
|
// NOTE: Using GL blend src/dst factors and GL equation configured with rlSetBlendFactors() |
|
|
|
glBlendFunc(RLGL.State.glBlendSrcFactor, RLGL.State.glBlendDstFactor); glBlendEquation(RLGL.State.glBlendEquation); |
|
|
|
|
|
|
|
} break; |
|
|
|
case RL_BLEND_CUSTOM_SEPARATE: |
|
|
|
{ |
|
|
|
// NOTE: Using GL blend src/dst factors and GL equation configured with rlSetBlendFactorsSeparate() |
|
|
|
glBlendFuncSeparate(RLGL.State.glBlendSrcFactorRGB, RLGL.State.glBlendDestFactorRGB, RLGL.State.glBlendSrcFactorAlpha, RLGL.State.glBlendDestFactorAlpha); |
|
|
|
glBlendEquationSeparate(RLGL.State.glBlendEquationRGB, RLGL.State.glBlendEquationAlpha); |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
} break; |
|
|
|
default: break; |
|
|
|
} |
|
|
|
|
|
|
@ -1831,20 +1833,23 @@ void rlSetBlendMode(int mode) |
|
|
|
} |
|
|
|
|
|
|
|
// Set blending mode factor and equation used by glBlendFuncSeparate and glBlendEquationSeparate |
|
|
|
void rlSetBlendFactorsSeparate(int srcRGB, int dstRGB, int srcAlpha, int dstAlpha, int modeRGB, int modeAlpha) { |
|
|
|
void rlSetBlendFactorsSeparate(int glSrcRGB, int glDstRGB, int glSrcAlpha, int glDstAlpha, int glEqRGB, int glEqAlpha) |
|
|
|
{ |
|
|
|
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) |
|
|
|
if (RLGL.State.glBlendSrcFactorRGB == srcRGB |
|
|
|
&& RLGL.State.glBlendDestFactorRGB == dstRGB |
|
|
|
&& RLGL.State.glBlendSrcFactorAlpha == srcAlpha |
|
|
|
&& RLGL.State.glBlendDestFactorAlpha == destAlpha |
|
|
|
&& RLGL.State.glBlendEquationRGB == modeRGB |
|
|
|
&& RLGL.State.glBlendEquationAlpha == modeAlpha) return; |
|
|
|
RLGL.State.glBlendSrcFactorRGB = srcRGB; |
|
|
|
RLGL.State.glBlendDestFactorRGB = destRGB; |
|
|
|
RLGL.State.glBlendSrcFactorAlpha = srcAlpha; |
|
|
|
RLGL.State.glBlendDestFactorAlpha = dstAlpha; |
|
|
|
RLGL.State.glBlendEquationRGB = modeRGB; |
|
|
|
RLGL.State.glBlendEquationAlpha = modeAlpha; |
|
|
|
if ((RLGL.State.glBlendSrcFactorRGB == glSrcRGB) && |
|
|
|
(RLGL.State.glBlendDestFactorRGB == glDstRGB) && |
|
|
|
(RLGL.State.glBlendSrcFactorAlpha == glSrcAlpha) && |
|
|
|
(RLGL.State.glBlendDestFactorAlpha == glDstAlpha) && |
|
|
|
(RLGL.State.glBlendEquationRGB == glEqRGB) && |
|
|
|
(RLGL.State.glBlendEquationAlpha == glEqAlpha)) return; |
|
|
|
|
|
|
|
RLGL.State.glBlendSrcFactorRGB = glSrcRGB; |
|
|
|
RLGL.State.glBlendDestFactorRGB = glDstRGB; |
|
|
|
RLGL.State.glBlendSrcFactorAlpha = glSrcAlpha; |
|
|
|
RLGL.State.glBlendDestFactorAlpha = glDstAlpha; |
|
|
|
RLGL.State.glBlendEquationRGB = glEqRGB; |
|
|
|
RLGL.State.glBlendEquationAlpha = glEqAlpha; |
|
|
|
|
|
|
|
RLGL.State.glCustomBlendModeModified = true; |
|
|
|
#endif |
|
|
|
} |
|
|
@ -1853,12 +1858,14 @@ void rlSetBlendFactorsSeparate(int srcRGB, int dstRGB, int srcAlpha, int dstAlph |
|
|
|
void rlSetBlendFactors(int glSrcFactor, int glDstFactor, int glEquation) |
|
|
|
{ |
|
|
|
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) |
|
|
|
if (RLGL.State.glBlendSrcFactor == glSrcFactor |
|
|
|
&& RLGL.State.glBlendDstFactor == glDstFactor |
|
|
|
&& RLGL.State.glBlendEquation == glEquation) return; |
|
|
|
if ((RLGL.State.glBlendSrcFactor == glSrcFactor) && |
|
|
|
(RLGL.State.glBlendDstFactor == glDstFactor) && |
|
|
|
(RLGL.State.glBlendEquation == glEquation)) return; |
|
|
|
|
|
|
|
RLGL.State.glBlendSrcFactor = glSrcFactor; |
|
|
|
RLGL.State.glBlendDstFactor = glDstFactor; |
|
|
|
RLGL.State.glBlendEquation = glEquation; |
|
|
|
|
|
|
|
RLGL.State.glCustomBlendModeModified = true; |
|
|
|
#endif |
|
|
|
} |
|
|
@ -2009,9 +2016,6 @@ void rlglInit(int width, int height) |
|
|
|
//---------------------------------------------------------- |
|
|
|
#endif |
|
|
|
|
|
|
|
// Init state: custom blend factor and equation modification flag |
|
|
|
RLGL.State.glCustomBlendModeModified = false; |
|
|
|
|
|
|
|
// Init state: Color/Depth buffers clear |
|
|
|
glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Set clear color (black) |
|
|
|
glClearDepth(1.0f); // Set clear depth value (default) |
|
|
|