/*!****************************************************************************
@file OGLES3/PVRTTextureAPI.h
@ingroup API_OGLES3
@copyright Copyright (c) Imagination Technologies Limited.
@brief OGLES3 texture loading.
******************************************************************************/
#ifndef _PVRTTEXTUREAPI_H_
#define _PVRTTEXTUREAPI_H_
/*!
@addtogroup API_OGLES3
@{
*/
#include "../PVRTError.h"
/****************************************************************************
** Functions
****************************************************************************/
template <typename KeyType, typename DataType>
class CPVRTMap;
/*!***************************************************************************
@brief Allows textures to be stored in C header files and loaded in. Can load parts of a
mipmaped texture (ie skipping the highest detailed levels).
Sets the texture MIN/MAG filter to GL_LINEAR_MIPMAP_NEAREST/GL_LINEAR
if mipmaps are present, GL_LINEAR/GL_LINEAR otherwise.
@param[in] pointer Pointer to header-texture's structure
@param[in,out] texName the OpenGL ES texture name as returned by glBindTexture
@param[in,out] psTextureHeader Pointer to a PVRTextureHeaderV3 struct. Modified to
contain the header data of the returned texture Ignored if NULL.
@param[in] bAllowDecompress Allow decompression if PVRTC is not supported in hardware.
@param[in] nLoadFromLevel Which mipmap level to start loading from (0=all)
@param[in] texPtr If null, texture follows header, else texture is here.
@param[in,out] pMetaData If a valid map is supplied, this will return any and all
MetaDataBlocks stored in the texture, organised by DevFourCC
then identifier. Supplying NULL will ignore all MetaData.
@return PVR_SUCCESS on success
*****************************************************************************/
EPVRTError PVRTTextureLoadFromPointer( const void* pointer,
GLuint *const texName,
const void *psTextureHeader=NULL,
bool bAllowDecompress = true,
const unsigned int nLoadFromLevel=0,
const void * const texPtr=0,
CPVRTMap<unsigned int, CPVRTMap<unsigned int, struct MetaDataBlock> > *pMetaData=NULL);
/*!***************************************************************************
@brief Allows textures to be stored in binary PVR files and loaded in. Can load parts of a
mipmaped texture (ie skipping the highest detailed levels).
Sets the texture MIN/MAG filter to GL_LINEAR_MIPMAP_NEAREST/GL_LINEAR
if mipmaps are present, GL_LINEAR/GL_LINEAR otherwise.
@param[in] filename Filename of the .PVR file to load the texture from
@param[in,out] texName the OpenGL ES texture name as returned by glBindTexture
@param[in,out] psTextureHeader Pointer to a PVRTextureHeaderV3 struct. Modified to
contain the header data of the returned texture Ignored if NULL.
@param[in] bAllowDecompress Allow decompression if PVRTC is not supported in hardware.
@param[in] nLoadFromLevel Which mipmap level to start loading from (0=all)
@param[in,out] pMetaData If a valid map is supplied, this will return any and all
MetaDataBlocks stored in the texture, organised by DevFourCC
then identifier. Supplying NULL will ignore all MetaData.
@return PVR_SUCCESS on success
*****************************************************************************/
EPVRTError PVRTTextureLoadFromPVR( const char * const filename,
GLuint * const texName,
const void *psTextureHeader=NULL,
bool bAllowDecompress = true,
const unsigned int nLoadFromLevel=0,
CPVRTMap<unsigned int, CPVRTMap<unsigned int, struct MetaDataBlock> > *pMetaData=NULL);
/*! @} */
#endif /* _PVRTTEXTUREAPI_H_ */
/*****************************************************************************
End of file (PVRTTextureAPI.h)
*****************************************************************************/