MCPcopy Create free account
hub / github.com/KhronosGroup/KTX-Software / ktxTexture_CreateFromStream

Function ktxTexture_CreateFromStream

lib/texture.c:317–358  ·  view source on GitHub ↗

* @memberof ktxTexture * @~English * @brief Create a ktx1 or ktx2 texture according to the stream * data. * * See @ref ktxTexture1::ktxTexture1_CreateFromStream * "ktxTexture1_CreateFromStream" or * @ref ktxTexture2::ktxTexture2_CreateFromStream * "ktxTexture2_CreateFromStream" for details. */

Source from the content-addressed store, hash-verified

315 * "ktxTexture2_CreateFromStream" for details.
316 */
317KTX_error_code
318ktxTexture_CreateFromStream(ktxStream* pStream,
319 ktxTextureCreateFlags createFlags,
320 ktxTexture** newTex)
321{
322 ktxHeaderUnion_ header;
323 ktxFileType_ fileType;
324 KTX_error_code result;
325 ktxTexture* tex;
326
327 result = ktxDetermineFileType_(pStream, &fileType, &header);
328 if (result != KTX_SUCCESS)
329 return result;
330
331 if (fileType == KTX1) {
332 ktxTexture1* tex1 = (ktxTexture1*)malloc(sizeof(ktxTexture1));
333 if (tex1 == NULL)
334 return KTX_OUT_OF_MEMORY;
335 memset(tex1, 0, sizeof(ktxTexture1));
336 result = ktxTexture1_constructFromStreamAndHeader(tex1, pStream,
337 &header.ktx,
338 createFlags);
339 tex = ktxTexture(tex1);
340 } else {
341 ktxTexture2* tex2 = (ktxTexture2*)malloc(sizeof(ktxTexture2));
342 if (tex2 == NULL)
343 return KTX_OUT_OF_MEMORY;
344 memset(tex2, 0, sizeof(ktxTexture2));
345 result = ktxTexture2_constructFromStreamAndHeader(tex2, pStream,
346 &header.ktx2,
347 createFlags);
348 tex = ktxTexture(tex2);
349 }
350
351 if (result == KTX_SUCCESS)
352 *newTex = (ktxTexture*)tex;
353 else {
354 free(tex);
355 *newTex = NULL;
356 }
357 return result;
358}
359
360/**
361 * @memberof ktxTexture

Callers 4

TEST_FFunction · 0.85

Tested by 1

TEST_FFunction · 0.68