|
|
@ -557,14 +557,14 @@ typedef enum { |
|
|
|
extern "C" { // Prevents name mangling of functions |
|
|
|
#endif |
|
|
|
|
|
|
|
RLAPI void rlMatrixMode(int mode); // Choose the current matrix to be transformed |
|
|
|
RLAPI void rlPushMatrix(void); // Push the current matrix to stack |
|
|
|
RLAPI void rlPopMatrix(void); // Pop latest inserted matrix from stack |
|
|
|
RLAPI void rlLoadIdentity(void); // Reset current matrix to identity matrix |
|
|
|
RLAPI void rlTranslatef(float x, float y, float z); // Multiply the current matrix by a translation matrix |
|
|
|
RLAPI void rlRotatef(float angle, float x, float y, float z); // Multiply the current matrix by a rotation matrix |
|
|
|
RLAPI void rlScalef(float x, float y, float z); // Multiply the current matrix by a scaling matrix |
|
|
|
RLAPI void rlMultMatrixf(const float *matf); // Multiply the current matrix by another matrix |
|
|
|
RLAPI void rlMatrixMode(int mode); // Choose the current matrix to be transformed |
|
|
|
RLAPI void rlPushMatrix(void); // Push the current matrix to stack |
|
|
|
RLAPI void rlPopMatrix(void); // Pop latest inserted matrix from stack |
|
|
|
RLAPI void rlLoadIdentity(void); // Reset current matrix to identity matrix |
|
|
|
RLAPI void rlTranslatef(float x, float y, float z); // Multiply the current matrix by a translation matrix |
|
|
|
RLAPI void rlRotatef(float angle, float x, float y, float z); // Multiply the current matrix by a rotation matrix |
|
|
|
RLAPI void rlScalef(float x, float y, float z); // Multiply the current matrix by a scaling matrix |
|
|
|
RLAPI void rlMultMatrixf(const float *matf); // Multiply the current matrix by another matrix |
|
|
|
RLAPI void rlFrustum(double left, double right, double bottom, double top, double znear, double zfar); |
|
|
|
RLAPI void rlOrtho(double left, double right, double bottom, double top, double znear, double zfar); |
|
|
|
RLAPI void rlViewport(int x, int y, int width, int height); // Set the viewport area |
|
|
@ -572,15 +572,15 @@ RLAPI void rlViewport(int x, int y, int width, int height); // Set the viewport |
|
|
|
//------------------------------------------------------------------------------------ |
|
|
|
// Functions Declaration - Vertex level operations |
|
|
|
//------------------------------------------------------------------------------------ |
|
|
|
RLAPI void rlBegin(int mode); // Initialize drawing mode (how to organize vertex) |
|
|
|
RLAPI void rlEnd(void); // Finish vertex providing |
|
|
|
RLAPI void rlVertex2i(int x, int y); // Define one vertex (position) - 2 int |
|
|
|
RLAPI void rlVertex2f(float x, float y); // Define one vertex (position) - 2 float |
|
|
|
RLAPI void rlVertex3f(float x, float y, float z); // Define one vertex (position) - 3 float |
|
|
|
RLAPI void rlTexCoord2f(float x, float y); // Define one vertex (texture coordinate) - 2 float |
|
|
|
RLAPI void rlNormal3f(float x, float y, float z); // Define one vertex (normal) - 3 float |
|
|
|
RLAPI void rlColor4ub(unsigned char r, unsigned char g, unsigned char b, unsigned char a); // Define one vertex (color) - 4 byte |
|
|
|
RLAPI void rlColor3f(float x, float y, float z); // Define one vertex (color) - 3 float |
|
|
|
RLAPI void rlBegin(int mode); // Initialize drawing mode (how to organize vertex) |
|
|
|
RLAPI void rlEnd(void); // Finish vertex providing |
|
|
|
RLAPI void rlVertex2i(int x, int y); // Define one vertex (position) - 2 int |
|
|
|
RLAPI void rlVertex2f(float x, float y); // Define one vertex (position) - 2 float |
|
|
|
RLAPI void rlVertex3f(float x, float y, float z); // Define one vertex (position) - 3 float |
|
|
|
RLAPI void rlTexCoord2f(float x, float y); // Define one vertex (texture coordinate) - 2 float |
|
|
|
RLAPI void rlNormal3f(float x, float y, float z); // Define one vertex (normal) - 3 float |
|
|
|
RLAPI void rlColor4ub(unsigned char r, unsigned char g, unsigned char b, unsigned char a); // Define one vertex (color) - 4 byte |
|
|
|
RLAPI void rlColor3f(float x, float y, float z); // Define one vertex (color) - 3 float |
|
|
|
RLAPI void rlColor4f(float x, float y, float z, float w); // Define one vertex (color) - 4 float |
|
|
|
|
|
|
|
//------------------------------------------------------------------------------------ |
|
|
@ -594,13 +594,13 @@ RLAPI bool rlEnableVertexArray(unsigned int vaoId); // Enable vertex array ( |
|
|
|
RLAPI void rlDisableVertexArray(void); // Disable vertex array (VAO, if supported) |
|
|
|
RLAPI void rlEnableVertexBuffer(unsigned int id); // Enable vertex buffer (VBO) |
|
|
|
RLAPI void rlDisableVertexBuffer(void); // Disable vertex buffer (VBO) |
|
|
|
RLAPI void rlEnableVertexBufferElement(unsigned int id);// Enable vertex buffer element (VBO element) |
|
|
|
RLAPI void rlEnableVertexBufferElement(unsigned int id); // Enable vertex buffer element (VBO element) |
|
|
|
RLAPI void rlDisableVertexBufferElement(void); // Disable vertex buffer element (VBO element) |
|
|
|
RLAPI void rlEnableVertexAttribute(unsigned int index); // Enable vertex attribute index |
|
|
|
RLAPI void rlDisableVertexAttribute(unsigned int index);// Disable vertex attribute index |
|
|
|
RLAPI void rlDisableVertexAttribute(unsigned int index); // Disable vertex attribute index |
|
|
|
#if defined(GRAPHICS_API_OPENGL_11) |
|
|
|
RLAPI void rlEnableStatePointer(int vertexAttribType, void *buffer); // Enable attribute state pointer |
|
|
|
RLAPI void rlDisableStatePointer(int vertexAttribType); // Disable attribute state pointer |
|
|
|
RLAPI void rlEnableStatePointer(int vertexAttribType, void *buffer); // Enable attribute state pointer |
|
|
|
RLAPI void rlDisableStatePointer(int vertexAttribType); // Disable attribute state pointer |
|
|
|
#endif |
|
|
|
|
|
|
|
// Textures state |
|
|
@ -623,7 +623,7 @@ RLAPI void rlActiveDrawBuffers(int count); // Activate multiple dra |
|
|
|
RLAPI void rlBlitFramebuffer(int srcX, int srcY, int srcWidth, int srcHeight, int dstX, int dstY, int dstWidth, int dstHeight, int bufferMask); // Blit active framebuffer to main framebuffer |
|
|
|
|
|
|
|
// General render state |
|
|
|
RLAPI void rlEnableColorBlend(void); // Enable color blending |
|
|
|
RLAPI void rlEnableColorBlend(void); // Enable color blending |
|
|
|
RLAPI void rlDisableColorBlend(void); // Disable color blending |
|
|
|
RLAPI void rlEnableDepthTest(void); // Enable depth test |
|
|
|
RLAPI void rlDisableDepthTest(void); // Disable depth test |
|
|
@ -636,7 +636,7 @@ RLAPI void rlEnableScissorTest(void); // Enable scissor test |
|
|
|
RLAPI void rlDisableScissorTest(void); // Disable scissor test |
|
|
|
RLAPI void rlScissor(int x, int y, int width, int height); // Scissor test |
|
|
|
RLAPI void rlEnableWireMode(void); // Enable wire mode |
|
|
|
RLAPI void rlEnablePointMode(void); // Enable point mode |
|
|
|
RLAPI void rlEnablePointMode(void); // Enable point mode |
|
|
|
RLAPI void rlDisableWireMode(void); // Disable wire mode ( and point ) maybe rename |
|
|
|
RLAPI void rlSetLineWidth(float width); // Set the line drawing width |
|
|
|
RLAPI float rlGetLineWidth(void); // Get the line drawing width |
|
|
@ -673,48 +673,48 @@ RLAPI int *rlGetShaderLocsDefault(void); // Get default shader lo |
|
|
|
// Render batch management |
|
|
|
// NOTE: rlgl provides a default render batch to behave like OpenGL 1.1 immediate mode |
|
|
|
// but this render batch API is exposed in case of custom batches are required |
|
|
|
RLAPI rlRenderBatch rlLoadRenderBatch(int numBuffers, int bufferElements); // Load a render batch system |
|
|
|
RLAPI void rlUnloadRenderBatch(rlRenderBatch batch); // Unload render batch system |
|
|
|
RLAPI void rlDrawRenderBatch(rlRenderBatch *batch); // Draw render batch data (Update->Draw->Reset) |
|
|
|
RLAPI void rlSetRenderBatchActive(rlRenderBatch *batch); // Set the active render batch for rlgl (NULL for default internal) |
|
|
|
RLAPI void rlDrawRenderBatchActive(void); // Update and draw internal render batch |
|
|
|
RLAPI bool rlCheckRenderBatchLimit(int vCount); // Check internal buffer overflow for a given number of vertex |
|
|
|
RLAPI rlRenderBatch rlLoadRenderBatch(int numBuffers, int bufferElements); // Load a render batch system |
|
|
|
RLAPI void rlUnloadRenderBatch(rlRenderBatch batch); // Unload render batch system |
|
|
|
RLAPI void rlDrawRenderBatch(rlRenderBatch *batch); // Draw render batch data (Update->Draw->Reset) |
|
|
|
RLAPI void rlSetRenderBatchActive(rlRenderBatch *batch); // Set the active render batch for rlgl (NULL for default internal) |
|
|
|
RLAPI void rlDrawRenderBatchActive(void); // Update and draw internal render batch |
|
|
|
RLAPI bool rlCheckRenderBatchLimit(int vCount); // Check internal buffer overflow for a given number of vertex |
|
|
|
|
|
|
|
RLAPI void rlSetTexture(unsigned int id); // Set current texture for render batch and check buffers limits |
|
|
|
|
|
|
|
//------------------------------------------------------------------------------------------------------------------------ |
|
|
|
|
|
|
|
// Vertex buffers management |
|
|
|
RLAPI unsigned int rlLoadVertexArray(void); // Load vertex array (vao) if supported |
|
|
|
RLAPI unsigned int rlLoadVertexBuffer(const void *buffer, int size, bool dynamic); // Load a vertex buffer attribute |
|
|
|
RLAPI unsigned int rlLoadVertexBufferElement(const void *buffer, int size, bool dynamic); // Load a new attributes element buffer |
|
|
|
RLAPI void rlUpdateVertexBuffer(unsigned int bufferId, const void *data, int dataSize, int offset); // Update GPU buffer with new data |
|
|
|
RLAPI void rlUpdateVertexBufferElements(unsigned int id, const void *data, int dataSize, int offset); // Update vertex buffer elements with new data |
|
|
|
RLAPI void rlUnloadVertexArray(unsigned int vaoId); |
|
|
|
RLAPI void rlUnloadVertexBuffer(unsigned int vboId); |
|
|
|
RLAPI void rlSetVertexAttribute(unsigned int index, int compSize, int type, bool normalized, int stride, const void *pointer); |
|
|
|
RLAPI void rlSetVertexAttributeDivisor(unsigned int index, int divisor); |
|
|
|
RLAPI void rlSetVertexAttributeDefault(int locIndex, const void *value, int attribType, int count); // Set vertex attribute default value |
|
|
|
RLAPI void rlDrawVertexArray(int offset, int count); |
|
|
|
RLAPI void rlDrawVertexArrayElements(int offset, int count, const void *buffer); |
|
|
|
RLAPI void rlDrawVertexArrayInstanced(int offset, int count, int instances); |
|
|
|
RLAPI void rlDrawVertexArrayElementsInstanced(int offset, int count, const void *buffer, int instances); |
|
|
|
RLAPI unsigned int rlLoadVertexArray(void); // Load vertex array (vao) if supported |
|
|
|
RLAPI unsigned int rlLoadVertexBuffer(const void *buffer, int size, bool dynamic); // Load a vertex buffer object |
|
|
|
RLAPI unsigned int rlLoadVertexBufferElement(const void *buffer, int size, bool dynamic); // Load vertex buffer elements object |
|
|
|
RLAPI void rlUpdateVertexBuffer(unsigned int bufferId, const void *data, int dataSize, int offset); // Update vertex buffer object data on GPU buffer |
|
|
|
RLAPI void rlUpdateVertexBufferElements(unsigned int id, const void *data, int dataSize, int offset); // Update vertex buffer elements data on GPU buffer |
|
|
|
RLAPI void rlUnloadVertexArray(unsigned int vaoId); // Unload vertex array (vao) |
|
|
|
RLAPI void rlUnloadVertexBuffer(unsigned int vboId); // Unload vertex buffer object |
|
|
|
RLAPI void rlSetVertexAttribute(unsigned int index, int compSize, int type, bool normalized, int stride, const void *pointer); // Set vertex attribute data configuration |
|
|
|
RLAPI void rlSetVertexAttributeDivisor(unsigned int index, int divisor); // Set vertex attribute data divisor |
|
|
|
RLAPI void rlSetVertexAttributeDefault(int locIndex, const void *value, int attribType, int count); // Set vertex attribute default value, when attribute to provided |
|
|
|
RLAPI void rlDrawVertexArray(int offset, int count); // Draw vertex array (currently active vao) |
|
|
|
RLAPI void rlDrawVertexArrayElements(int offset, int count, const void *buffer); // Draw vertex array elements |
|
|
|
RLAPI void rlDrawVertexArrayInstanced(int offset, int count, int instances); // Draw vertex array (currently active vao) with instancing |
|
|
|
RLAPI void rlDrawVertexArrayElementsInstanced(int offset, int count, const void *buffer, int instances); // Draw vertex array elements with instancing |
|
|
|
|
|
|
|
// Textures management |
|
|
|
RLAPI unsigned int rlLoadTexture(const void *data, int width, int height, int format, int mipmapCount); // Load texture in GPU |
|
|
|
RLAPI unsigned int rlLoadTextureDepth(int width, int height, bool useRenderBuffer); // Load depth texture/renderbuffer (to be attached to fbo) |
|
|
|
RLAPI unsigned int rlLoadTextureCubemap(const void *data, int size, int format); // Load texture cubemap |
|
|
|
RLAPI void rlUpdateTexture(unsigned int id, int offsetX, int offsetY, int width, int height, int format, const void *data); // Update GPU texture with new data |
|
|
|
RLAPI void rlGetGlTextureFormats(int format, unsigned int *glInternalFormat, unsigned int *glFormat, unsigned int *glType); // Get OpenGL internal formats |
|
|
|
RLAPI unsigned int rlLoadTexture(const void *data, int width, int height, int format, int mipmapCount); // Load texture data |
|
|
|
RLAPI unsigned int rlLoadTextureDepth(int width, int height, bool useRenderBuffer); // Load depth texture/renderbuffer (to be attached to fbo) |
|
|
|
RLAPI unsigned int rlLoadTextureCubemap(const void *data, int size, int format); // Load texture cubemap data |
|
|
|
RLAPI void rlUpdateTexture(unsigned int id, int offsetX, int offsetY, int width, int height, int format, const void *data); // Update texture with new data on GPU |
|
|
|
RLAPI void rlGetGlTextureFormats(int format, unsigned int *glInternalFormat, unsigned int *glFormat, unsigned int *glType); // Get OpenGL internal formats |
|
|
|
RLAPI const char *rlGetPixelFormatName(unsigned int format); // Get name string for pixel format |
|
|
|
RLAPI void rlUnloadTexture(unsigned int id); // Unload texture from GPU memory |
|
|
|
RLAPI void rlGenTextureMipmaps(unsigned int id, int width, int height, int format, int *mipmaps); // Generate mipmap data for selected texture |
|
|
|
RLAPI void *rlReadTexturePixels(unsigned int id, int width, int height, int format); // Read texture pixel data |
|
|
|
RLAPI void *rlReadTexturePixels(unsigned int id, int width, int height, int format); // Read texture pixel data |
|
|
|
RLAPI unsigned char *rlReadScreenPixels(int width, int height); // Read screen pixel data (color buffer) |
|
|
|
|
|
|
|
// Framebuffer management (fbo) |
|
|
|
RLAPI unsigned int rlLoadFramebuffer(int width, int height); // Load an empty framebuffer |
|
|
|
RLAPI void rlFramebufferAttach(unsigned int fboId, unsigned int texId, int attachType, int texType, int mipLevel); // Attach texture/renderbuffer to a framebuffer |
|
|
|
RLAPI void rlFramebufferAttach(unsigned int fboId, unsigned int texId, int attachType, int texType, int mipLevel); // Attach texture/renderbuffer to a framebuffer |
|
|
|
RLAPI bool rlFramebufferComplete(unsigned int id); // Verify framebuffer is complete |
|
|
|
RLAPI void rlUnloadFramebuffer(unsigned int id); // Delete framebuffer from GPU |
|
|
|
|
|
|
@ -725,14 +725,14 @@ RLAPI unsigned int rlLoadShaderProgram(unsigned int vShaderId, unsigned int fSha |
|
|
|
RLAPI void rlUnloadShaderProgram(unsigned int id); // Unload shader program |
|
|
|
RLAPI int rlGetLocationUniform(unsigned int shaderId, const char *uniformName); // Get shader location uniform |
|
|
|
RLAPI int rlGetLocationAttrib(unsigned int shaderId, const char *attribName); // Get shader location attribute |
|
|
|
RLAPI void rlSetUniform(int locIndex, const void *value, int uniformType, int count); // Set shader value uniform |
|
|
|
RLAPI void rlSetUniform(int locIndex, const void *value, int uniformType, int count); // Set shader value uniform |
|
|
|
RLAPI void rlSetUniformMatrix(int locIndex, Matrix mat); // Set shader value matrix |
|
|
|
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) |
|
|
|
|
|
|
|
// Compute shader management |
|
|
|
RLAPI unsigned int rlLoadComputeShaderProgram(unsigned int shaderId); // Load compute shader program |
|
|
|
RLAPI void rlComputeShaderDispatch(unsigned int groupX, unsigned int groupY, unsigned int groupZ); // Dispatch compute shader (equivalent to *draw* for graphics pipeline) |
|
|
|
RLAPI void rlComputeShaderDispatch(unsigned int groupX, unsigned int groupY, unsigned int groupZ); // Dispatch compute shader (equivalent to *draw* for graphics pipeline) |
|
|
|
|
|
|
|
// Shader buffer storage object management (ssbo) |
|
|
|
RLAPI unsigned int rlLoadShaderBuffer(unsigned int size, const void *data, int usageHint); // Load shader storage buffer object (SSBO) |
|
|
@ -3794,6 +3794,10 @@ unsigned int rlLoadVertexArray(void) |
|
|
|
void rlSetVertexAttribute(unsigned int index, int compSize, int type, bool normalized, int stride, const void *pointer) |
|
|
|
{ |
|
|
|
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) |
|
|
|
// NOTE: Data type could be: GL_BYTE, GL_UNSIGNED_BYTE, GL_SHORT, GL_UNSIGNED_SHORT, GL_INT, GL_UNSIGNED_INT |
|
|
|
// Additional types (depends on OpenGL version or extensions): |
|
|
|
// - GL_HALF_FLOAT, GL_FLOAT, GL_DOUBLE, GL_FIXED, |
|
|
|
// - GL_INT_2_10_10_10_REV, GL_UNSIGNED_INT_2_10_10_10_REV, GL_UNSIGNED_INT_10F_11F_11F_REV |
|
|
|
glVertexAttribPointer(index, compSize, type, normalized, stride, pointer); |
|
|
|
#endif |
|
|
|
} |
|
|
|