Add rlBindImageTexture (untested), now requires SUPPORT_COMPILE_SHADERS
This commit is contained in:
parent
d26b400ccc
commit
29f8958860
22
src/rlgl.h
22
src/rlgl.h
|
|
@ -41,6 +41,10 @@
|
||||||
* #define SUPPORT_GL_DETAILS_INFO
|
* #define SUPPORT_GL_DETAILS_INFO
|
||||||
* Show OpenGL extensions and capabilities detailed logs on init
|
* Show OpenGL extensions and capabilities detailed logs on init
|
||||||
*
|
*
|
||||||
|
* #define SUPPORT_COMPUTE_SHADERS
|
||||||
|
* Enable compute shaders and shader storage buffer object support.
|
||||||
|
* Currently only work with GRAPHICS_API_OPENGL_33 with appropriate driver support.
|
||||||
|
*
|
||||||
* rlgl capabilities could be customized just defining some internal
|
* rlgl capabilities could be customized just defining some internal
|
||||||
* values before library inclusion (default values listed):
|
* values before library inclusion (default values listed):
|
||||||
*
|
*
|
||||||
|
|
@ -645,8 +649,9 @@ RLAPI void rlSetUniformMatrix(int locIndex, Matrix mat); //
|
||||||
RLAPI void rlSetUniformSampler(int locIndex, unsigned int textureId); // Set shader value sampler
|
RLAPI void rlSetUniformSampler(int locIndex, unsigned int textureId); // Set shader value sampler
|
||||||
RLAPI void rlSetShader(unsigned int id, int *locs); // Set shader currently active (id and locations)
|
RLAPI void rlSetShader(unsigned int id, int *locs); // Set shader currently active (id and locations)
|
||||||
|
|
||||||
|
#if defined(SUPPORT_COMPUTE_SHADERS)
|
||||||
// Compute shader management
|
// Compute shader management
|
||||||
RLAPI unsigned int rlLoadComputeShaderProgram(int shaderId);
|
RLAPI unsigned int rlLoadComputeShaderProgram(unsigned int shaderId);
|
||||||
RLAPI void rlComputeShaderDispatch(unsigned int groupX, unsigned int groupY, unsigned int groupZ);
|
RLAPI void rlComputeShaderDispatch(unsigned int groupX, unsigned int groupY, unsigned int groupZ);
|
||||||
|
|
||||||
// Shader buffer storage object management (ssbo)
|
// Shader buffer storage object management (ssbo)
|
||||||
|
|
@ -659,6 +664,8 @@ RLAPI void rlBindShaderBuffer(unsigned int id, unsigned int index);
|
||||||
|
|
||||||
// Buffer management
|
// Buffer management
|
||||||
RLAPI void rlCopyBuffersElements(unsigned int destId, unsigned int srcId, unsigned long long destOffset, unsigned long long srcOffset, unsigned long long count);
|
RLAPI void rlCopyBuffersElements(unsigned int destId, unsigned int srcId, unsigned long long destOffset, unsigned long long srcOffset, unsigned long long count);
|
||||||
|
RLAPI void rlBindImageTexture(unsigned int id, unsigned int index, unsigned int format, int readonly);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Matrix state management
|
// Matrix state management
|
||||||
RLAPI Matrix rlGetMatrixModelview(void); // Get internal modelview matrix
|
RLAPI Matrix rlGetMatrixModelview(void); // Get internal modelview matrix
|
||||||
|
|
@ -3756,7 +3763,7 @@ void rlSetShader(unsigned int id, int *locs)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int rlLoadComputeShaderProgram(int shaderId)
|
unsigned int rlLoadComputeShaderProgram(unsigned int shaderId)
|
||||||
{
|
{
|
||||||
unsigned int program = 0;
|
unsigned int program = 0;
|
||||||
|
|
||||||
|
|
@ -3803,6 +3810,7 @@ unsigned int rlLoadComputeShaderProgram(int shaderId)
|
||||||
return program;
|
return program;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(SUPPORT_COMPUTE_SHADERS)
|
||||||
void rlComputeShaderDispatch(unsigned int groupX, unsigned int groupY, unsigned int groupZ)
|
void rlComputeShaderDispatch(unsigned int groupX, unsigned int groupY, unsigned int groupZ)
|
||||||
{
|
{
|
||||||
#if defined(GRAPHICS_API_OPENGL_33)
|
#if defined(GRAPHICS_API_OPENGL_33)
|
||||||
|
|
@ -3872,6 +3880,16 @@ void rlCopyBuffersElements(unsigned int destId, unsigned int srcId, unsigned lon
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void rlBindImageTexture(unsigned int id, unsigned int index, unsigned int format, int readonly)
|
||||||
|
{
|
||||||
|
#if defined(GRAPHICS_API_OPENGL_33)
|
||||||
|
int glInternalFormat = 0, glFormat = 0, glType = 0;
|
||||||
|
|
||||||
|
rlGetGlTextureFormats(format, &glInternalFormat, &glFormat, &glType);
|
||||||
|
glBindImageTexture(index, id, 0, 0, 0, readonly ? GL_READ_ONLY : GL_READ_WRITE, glInternalFormat);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// Matrix state management
|
// Matrix state management
|
||||||
//-----------------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------------
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user