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

Internals of the Buffer module. More...

Collaboration diagram for Buffer:

Files

file  buffer.c
 
file  buffer_p.h
 

Classes

struct  SRPVertexBuffer
 
SRPVertexBuffersrpNewVertexBuffer ()
 
void srpVertexBufferCopyData (SRPVertexBuffer *this, size_t nBytesPerVertex, size_t nBytesData, const void *data)
 
void srpFreeVertexBuffer (SRPVertexBuffer *this)
 
void srpDrawVertexBuffer (const SRPVertexBuffer *this, const SRPFramebuffer *fb, const SRPShaderProgram *sp, SRPPrimitive primitive, size_t startIndex, size_t count)
 
SRPVertexindexVertexBuffer (const SRPVertexBuffer *this, size_t index)
 
SRPIndexBuffersrpNewIndexBuffer ()
 
void srpIndexBufferCopyData (SRPIndexBuffer *this, SRPType indicesType, size_t nBytesData, const void *data)
 
void srpFreeIndexBuffer (SRPIndexBuffer *this)
 
uint64_t indexIndexBuffer (const SRPIndexBuffer *this, size_t index)
 
void srpDrawIndexBuffer (const SRPIndexBuffer *this, const SRPVertexBuffer *vb, const SRPFramebuffer *fb, const SRPShaderProgram *sp, SRPPrimitive primitive, size_t startIndex, size_t count)
 

Detailed Description

Internals of the Buffer module.

See also
Buffer

Function Documentation

◆ indexIndexBuffer()

uint64_t indexIndexBuffer ( const SRPIndexBuffer this,
size_t  ibIndex 
)

Get an element stored in SRPIndexBuffer. Needed because SRPIndexBuffer stores opaque index types.

Parameters
[in]thisPointer to SRPIndexBuffer
[in]ibIndexIndex of the element in the SRPIndexBuffer
Returns
Element upcasted to uint64_t

◆ indexVertexBuffer()

SRPVertex * indexVertexBuffer ( const SRPVertexBuffer this,
size_t  index 
)

Get a vertex stored in SRPVertexBuffer.

Parameters
[in]thisPointer to SRPVertexBuffer
[in]indexIndex of the vertex to get
Returns
Requested vertex

◆ 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 SRP_UINT8, SRP_UINT16, SRP_UINT32, SRP_UINT64
[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