srp
software rendering pipeline
Loading...
Searching...
No Matches

VBO and EBO OpenGL-like objects to store vertex and other data which is used directly in the drawcalls. More...

Collaboration diagram for Buffer:
enum  SRPPrimitive {
  SRP_PRIM_POINTS , SRP_PRIM_LINES , SRP_PRIM_LINE_STRIP , SRP_PRIM_LINE_LOOP ,
  SRP_PRIM_TRIANGLES , SRP_PRIM_TRIANGLE_STRIP , SRP_PRIM_TRIANGLE_FAN
}
 
typedef enum SRPPrimitive SRPPrimitive
 
typedef struct SRPVertexBuffer SRPVertexBuffer
 
typedef struct SRPIndexBuffer SRPIndexBuffer
 
SRPVertexBuffersrpNewVertexBuffer ()
 
void srpFreeVertexBuffer (SRPVertexBuffer *this)
 
void srpVertexBufferCopyData (SRPVertexBuffer *this, size_t nBytesPerVertex, size_t nBytesData, const void *data)
 
void srpDrawVertexBuffer (const SRPVertexBuffer *this, const SRPFramebuffer *fb, const SRPShaderProgram *sp, SRPPrimitive primitive, size_t startIndex, size_t count)
 
SRPIndexBuffersrpNewIndexBuffer ()
 
void srpIndexBufferCopyData (SRPIndexBuffer *this, SRPType indicesType, size_t nBytesData, const void *data)
 
void srpFreeIndexBuffer (SRPIndexBuffer *this)
 
void srpDrawIndexBuffer (const SRPIndexBuffer *this, const SRPVertexBuffer *vb, const SRPFramebuffer *fb, const SRPShaderProgram *sp, SRPPrimitive primitive, size_t startIndex, size_t count)
 

Detailed Description

VBO and EBO OpenGL-like objects to store vertex and other data which is used directly in the drawcalls.

Typedef Documentation

◆ SRPIndexBuffer

Stores indices to vertices from SRPVertexBuffer similarly to EBO in OpenGL

◆ SRPPrimitive

typedef enum SRPPrimitive SRPPrimitive

Specifies primitives that can be drawn

See also
srpDrawVertexBuffer() srpDrawIndexBuffer()

◆ SRPVertexBuffer

Stores vertex data, similarly to VBO in OpenGL

Enumeration Type Documentation

◆ SRPPrimitive

Specifies primitives that can be drawn

See also
srpDrawVertexBuffer() srpDrawIndexBuffer()
Enumerator
SRP_PRIM_POINTS 

Draw points (0, 1, 2, 3, ..., n-1)

SRP_PRIM_LINES 

Draw lines (0-1, 2-3, ...) If non-even N of vertices, then the extra one is ignored)

SRP_PRIM_LINE_STRIP 

Draw lines (0-1, 1-2, ..., {n-2}-{n-1})

SRP_PRIM_LINE_LOOP 

Draw lines (0-1, 1-2, ..., {n-2}-{n-1}, {n-1}-0)

SRP_PRIM_TRIANGLES 

Draw triangles (0-1-2, 3-4-5, ...)

SRP_PRIM_TRIANGLE_STRIP 

Draw triangles (0-1-2, 1-2-3, 2-3-4, ...)

SRP_PRIM_TRIANGLE_FAN 

Draw triangles (0-1-2, 0-2-3, 0-3-4, ...)

Function Documentation

◆ srpDrawIndexBuffer()

void srpDrawIndexBuffer ( const SRPIndexBuffer this,
const SRPVertexBuffer vb,
const SRPFramebuffer fb,
const SRPShaderProgram sp,
SRPPrimitive  primitive,
size_t  startIndex,
size_t  count 
)

Draw vertices using both vertex and index buffers

Parameters
[in]thisThe index buffer to read the indices from
[in]vbThe vertex buffer to read the vertex data from
[in]fbThe framebuffer to draw to
[in]spThe shader program to use
[in]primitiveSpecifies the primitive to draw
[in]startIndexSpecifies from what index buffer's index to start drawing
[in]countSpecifies how many indices to draw

◆ srpDrawVertexBuffer()

void srpDrawVertexBuffer ( const SRPVertexBuffer this,
const SRPFramebuffer fb,
const SRPShaderProgram sp,
SRPPrimitive  primitive,
size_t  startIndex,
size_t  count 
)

Draw vertices from vertex buffer

Parameters
[in]thisThe pointer to vertex buffer to read the vertex data from
[in]fbThe framebuffer to draw to
[in]spThe shader program to use
[in]primitiveSpecifies the primitive to draw
[in]startIndexSpecifies from what index to start drawing
[in]countSpecifies how many vertices to draw

◆ srpFreeIndexBuffer()

void srpFreeIndexBuffer ( SRPIndexBuffer this)

Free the index buffer

Parameters
[in]thisThe pointer to index buffer, as returned from srpNewIndexBuffer()

◆ srpFreeVertexBuffer()

void srpFreeVertexBuffer ( SRPVertexBuffer this)

Free the vertex buffer

Parameters
[in]thisThe pointer to vertex buffer, as returned from srpNewVertexBuffer()

◆ srpIndexBufferCopyData()

void srpIndexBufferCopyData ( SRPIndexBuffer this,
SRPType  indicesType,
size_t  nBytesData,
const void *  data 
)

Copy the vertex data over to vertex buffer

Parameters
[in]thisThe pointer to index buffer
[in]indicesTypeThe type of indices passed by data. Must be one of TYPE_UINT8, TYPE_UINT16, TYPE_UINT32, TYPE_UIN64
[in]nBytesDataThe size of index data
[in]dataThe pointer to an array of indices of type indicesType

◆ srpNewIndexBuffer()

SRPIndexBuffer * srpNewIndexBuffer ( )

Construct the index buffer

Returns
A pointer to constructed index buffer

◆ srpNewVertexBuffer()

SRPVertexBuffer * srpNewVertexBuffer ( )

Construct the vertex buffer.

See also
srpVertexBufferCopyData()
Returns
A pointer to constructed vertex buffer

◆ srpVertexBufferCopyData()

void srpVertexBufferCopyData ( SRPVertexBuffer this,
size_t  nBytesPerVertex,
size_t  nBytesData,
const void *  data 
)

Copy the vertex data over to vertex buffer

Parameters
[in]thisThe pointer to vertex buffer
[in]nBytesPerVertexThe size of one vertex, in bytes
[in]nBytesDataThe size of vertex data, in bytes
[in]dataThe pointer to vertex data