/** * @~English * @brief Load a GL texture object from KTX formatted data in memory. * * @param [in] bytes pointer to the array of bytes containing * the KTX format data to load. * @param [in] size size of the memory array containing the * KTX format data. * @param [in,out] pTexture name of the GL texture to load. See * ktxLoadTextureF() for details. * @param [out] pTarget @p *pTarget is set to the texture target used. See * ktxLoadTextureF() for details. * @param [out] pDimensions @p the texture's base level width depth and height * are returned in structure to which this points. * See ktxLoadTextureF() for details. * @param [out] pIsMipmapped @p *pIsMipMapped is set to indicate if the loaded * texture is mipmapped. See ktxLoadTextureF() for * details. * @param [out] pGlerror @p *pGlerror is set to the value returned by * glGetError when this function returns the error * KTX_GL_ERROR. glerror can be NULL. * @param [in,out] pKvdLen If not NULL, @p *pKvdLen is set to the number of bytes * of key-value data pointed at by @p *ppKvd. Must not be * NULL, if @p ppKvd is not NULL. * @param [in,out] ppKvd If not NULL, @p *ppKvd is set to the point to a block of * memory containing key-value data read from the file. * The application is responsible for freeing the memory.* * * @return KTX_SUCCESS on success, other KTX_* enum values on error. * * @exception KTX_FILE_OPEN_FAILED The specified memory could not be opened as a file. * @exception KTX_INVALID_VALUE See ktxLoadTextureF() for causes. * @exception KTX_INVALID_OPERATION See ktxLoadTextureF() for causes. * @exception KTX_UNEXPECTED_END_OF_FILE See ktxLoadTextureF() for causes. * * @exception KTX_GL_ERROR See ktxLoadTextureF() for causes. */ KTX_error_code ktxLoadTextureM(const void* bytes, GLsizei size, GLuint* pTexture, GLenum* pTarget, KTX_dimensions* pDimensions, GLboolean* pIsMipmapped, GLenum* pGlerror, unsigned int* pKvdLen, unsigned char** ppKvd) { struct ktxMem mem; struct ktxStream stream; if (!ktxMemInit(&stream, &mem, bytes, size)) { return KTX_FILE_OPEN_FAILED; } return ktxLoadTextureS(&stream, pTexture, pTarget, pDimensions, pIsMipmapped, pGlerror, pKvdLen, ppKvd); }
/** * @~English * @brief Load a GL texture object from KTX formatted data in memory. * * @param [in] bytes pointer to the array of bytes containing * the KTX format data to load. * @param [in] size size of the memory array containing the * KTX format data. * @param [in,out] pTexture name of the GL texture to load. See * ktxLoadTextureF() for details. * @param [out] pTarget @p *pTarget is set to the texture target used. See * ktxLoadTextureF() for details. * @param [out] pDimensions @p the texture's base level width depth and height * are returned in structure to which this points. * See ktxLoadTextureF() for details. * @param [out] pIsMipmapped @p *pIsMipMapped is set to indicate if the loaded * texture is mipmapped. See ktxLoadTextureF() for * details. * @param [out] pGlerror @p *pGlerror is set to the value returned by * glGetError when this function returns the error * KTX_GL_ERROR. glerror can be NULL. * @param [in,out] pKvdLen If not NULL, @p *pKvdLen is set to the number of bytes * of key-value data pointed at by @p *ppKvd. Must not be * NULL, if @p ppKvd is not NULL. * @param [in,out] ppKvd If not NULL, @p *ppKvd is set to the point to a block of * memory containing key-value data read from the file. * The application is responsible for freeing the memory.* * * @return KTX_SUCCESS on success, other KTX_* enum values on error. * * @exception KTX_FILE_OPEN_FAILED The specified memory could not be opened as a file. * @exception KTX_INVALID_VALUE See ktxLoadTextureF() for causes. * @exception KTX_INVALID_OPERATION See ktxLoadTextureF() for causes. * @exception KTX_UNEXPECTED_END_OF_FILE See ktxLoadTextureF() for causes. * * @exception KTX_GL_ERROR See ktxLoadTextureF() for causes. */ KTX_error_code ktxLoadTextureM(const void* bytes, GLsizei size, GLuint* pTexture, GLenum* pTarget, KTX_dimensions* pDimensions, GLboolean* pIsMipmapped, GLenum* pGlerror, unsigned int* pKvdLen, unsigned char** ppKvd) { struct ktxMem mem; struct ktxStream stream; KTX_error_code errorCode = KTX_SUCCESS; errorCode = ktxMemInit(&stream, &mem, bytes, size); if (errorCode != KTX_SUCCESS) return errorCode; return ktxLoadTextureS(&stream, pTexture, pTarget, pDimensions, pIsMipmapped, pGlerror, pKvdLen, ppKvd); }