get pointers instead of copying data

main
cosmonaut 2022-04-12 16:38:09 -07:00
parent b92b8da6e4
commit e93662f231
2 changed files with 19 additions and 27 deletions

View File

@ -103,14 +103,13 @@ WELLSPRINGAPI uint32_t Wellspring_PackFontRanges(
uint32_t numRanges uint32_t numRanges
); );
/* Copies pixel data into the given byte array. /* Returns a pointer to an array of rasterized pixels of the packed font.
* This data must be uploaded to a texture before you render! * This data must be uploaded to a texture before you render!
* The pixel data also becomes outdated if you call PackFontRanges. * The pixel data becomes outdated if you call PackFontRanges.
* Length is width * height. * Length is width * height.
*/ */
WELLSPRINGAPI void Wellspring_GetPixels( WELLSPRINGAPI uint8_t* Wellspring_GetPixelDataPointer(
Wellspring_Packer *packer, Wellspring_Packer *packer
uint8_t *pData
); );
/* Batches are not thread-safe, recommend one batch per thread. */ /* Batches are not thread-safe, recommend one batch per thread. */
@ -138,8 +137,10 @@ WELLSPRINGAPI void Wellspring_GetBufferLengths(
WELLSPRINGAPI void Wellspring_GetBufferData( WELLSPRINGAPI void Wellspring_GetBufferData(
Wellspring_TextBatch *textBatch, Wellspring_TextBatch *textBatch,
Wellspring_Vertex *pVertexBuffer, Wellspring_Vertex **pVertexBuffer,
uint32_t *pIndexBuffer uint32_t *pVertexBufferLengthInBytes,
uint32_t **pIndexBuffer,
uint32_t *pIndexBufferLengthInBytes
); );
WELLSPRINGAPI void Wellspring_DestroyTextBatch(Wellspring_TextBatch *textBatch); WELLSPRINGAPI void Wellspring_DestroyTextBatch(Wellspring_TextBatch *textBatch);

View File

@ -214,16 +214,11 @@ uint32_t Wellspring_PackFontRanges(
return 1; return 1;
} }
void Wellspring_GetPixels( uint8_t* Wellspring_GetPixelDataPointer(
Wellspring_Packer *packer, Wellspring_Packer *packer
uint8_t *pData
) { ) {
Packer* myPacker = (Packer*) packer; Packer* myPacker = (Packer*) packer;
Wellspring_memcpy( return myPacker->pixels;
pData,
myPacker->pixels,
sizeof(uint8_t) * myPacker->width * myPacker->height
);
} }
Wellspring_TextBatch* Wellspring_CreateTextBatch() Wellspring_TextBatch* Wellspring_CreateTextBatch()
@ -389,20 +384,16 @@ void Wellspring_GetBufferLengths(
void Wellspring_GetBufferData( void Wellspring_GetBufferData(
Wellspring_TextBatch *textBatch, Wellspring_TextBatch *textBatch,
Wellspring_Vertex *pVertexBuffer, Wellspring_Vertex **pVertexBuffer,
uint32_t *pIndexBuffer uint32_t *pVertexBufferLengthInBytes,
uint32_t **pIndexBuffer,
uint32_t *pIndexBufferLengthInBytes
) { ) {
Batch *batch = (Batch*) textBatch; Batch *batch = (Batch*) textBatch;
Wellspring_memcpy( *pVertexBuffer = batch->vertices;
pVertexBuffer, *pVertexBufferLengthInBytes = batch->vertexCount * sizeof(Wellspring_Vertex);
batch->vertices, *pIndexBuffer = batch->indices;
sizeof(Wellspring_Vertex) * batch->vertexCount *pIndexBufferLengthInBytes = batch->indexCount * sizeof(uint32_t);
);
Wellspring_memcpy(
pIndexBuffer,
batch->indices,
sizeof(uint32_t) * batch->indexCount
);
} }
void Wellspring_DestroyTextBatch(Wellspring_TextBatch *textBatch) void Wellspring_DestroyTextBatch(Wellspring_TextBatch *textBatch)