|  | /*!**************************************************************************** | 
|  |  | 
|  | @file         PVRTools.h | 
|  | @copyright    Copyright (c) Imagination Technologies Limited. | 
|  | @brief        Header file to include a particular API tools header | 
|  |  | 
|  | ******************************************************************************/ | 
|  | #ifndef PVRTOOLS_H | 
|  | #define PVRTOOLS_H | 
|  |  | 
|  | /*****************************************************************************/ | 
|  | /*! @mainpage PVRTools | 
|  | ****************************************************************************** | 
|  |  | 
|  | \tableofcontents | 
|  |  | 
|  | @section overview Overview | 
|  | ***************************** | 
|  |  | 
|  | PVRTools is a collection of source code to help developers with some common | 
|  | tasks which are frequently used in 3D programming. | 
|  | PVRTools supplies code for mathematical operations, matrix handling, | 
|  | loading 3D models and to optimise geometry. | 
|  | Sections which are specific to certain APIs contain code for displaying text and loading textures. | 
|  |  | 
|  |  | 
|  | @section fileformats File formats | 
|  | ***************************** | 
|  | The following file formats are used in PVRTools: | 
|  |  | 
|  | @subsection PFX_format PFX format | 
|  | ***************************** | 
|  | PFX (PowerVR Effects) files are used to store graphics effects. As a minimum, a correctly formatted PFX consists of: | 
|  | \li One EFFECT block | 
|  | \li One VERTEXSHADER block | 
|  | \li One FRAGMENTSHADER block | 
|  |  | 
|  | It is also possible for PFXs to contain the following: | 
|  | \li One TARGET block | 
|  | \li Zero or more TEXTURE blocks | 
|  |  | 
|  | By default PFXs are stored in .pfx files. It is possible for multiple PFXs to exist within a single .pfx file, | 
|  | each described by a separate effect block; in this instance multiple PFXs may share blocks. | 
|  | Finally, it is possible for a PFX to reference a TARGET block as an input as if it were a TEXTURE block, | 
|  | enabling the simple creation of complex post-processing effects.  For this to function correctly the TARGET | 
|  | block render should be completed prior to being read as an input.  If the TARGET block render has not been | 
|  | completed prior to being read as an input, the behaviour will vary based on the render target implementation of the platform. | 
|  |  | 
|  | For more information see the <em>PFX File Format Specification</em>. | 
|  |  | 
|  | @subsection POD_format POD format | 
|  | ***************************** | 
|  | POD files store data for representing 3D scenes; including geometry information, animations, matrices, materials, skinning data, lights, cameras, and in some instances custom meta-data. | 
|  | These files are output by the PVRGeoPOD tool, and are designed for deployment through optimistions such as triangle/vertex sorting and data stripping. | 
|  |  | 
|  | The format is designed to be easily read, for information on the required algorithm and the overall structure of the format see the <em>POD File Format Specification</em>. | 
|  |  | 
|  | @subsection PVR_format PVR format | 
|  | ***************************** | 
|  | PVR files are used as a container to store texture data. PVR files can be exported from PVRTexTool and a number of third party applications. | 
|  |  | 
|  | For more information see the <em>PVR File Format Specification</em>. | 
|  |  | 
|  | @section files Header files | 
|  | ***************************** | 
|  |  | 
|  | Here is a list of common header files present in PVRTools: | 
|  |  | 
|  | \li PVRTArray.h: A dynamic, resizable template class. | 
|  |  | 
|  | \li PVRTBackground.h: Create a textured background. | 
|  |  | 
|  | \li PVRTBoneBatch.h: Group vertices per bones to allow skinning when the maximum number of bones is limited. | 
|  |  | 
|  | \li PVRTDecompress.h: Descompress PVRTC texture format. | 
|  |  | 
|  | \li PVRTError.h: Error codes and tools output debug. | 
|  |  | 
|  | \li PVRTFixedPoint.h: Fast fixed point mathematical functions. | 
|  |  | 
|  | \li PVRTGlobal.h: Global defines and typedefs. | 
|  |  | 
|  | \li PVRTHash.h: A simple hash class which uses TEA to hash a string or given data into a 32-bit unsigned int. | 
|  |  | 
|  | \li PVRTMap.h: A dynamic, expanding templated map class. | 
|  |  | 
|  | \li PVRTMatrix.h: Vector and Matrix functions. | 
|  |  | 
|  | \li PVRTMemoryFileSystem.h: Memory file system for resource files. | 
|  |  | 
|  | \li PVRTMisc.h: Skybox, line plane intersection code, etc... | 
|  |  | 
|  | \li PVRTModelPOD.h: Load geometry and animation from a POD file. | 
|  |  | 
|  | \li PVRTPFXParser.h: Code to parse our PFX file format. Note, not used in fixed function APIs, such as @ref API_OGLES "OpenGL ES 1.x". | 
|  |  | 
|  | \li PVRTPrint3D.h: Display text/logos on the screen. | 
|  |  | 
|  | \li PVRTQuaternion.h: Quaternion functions. | 
|  |  | 
|  | \li PVRTResourceFile.h: The tools code for loading files included using FileWrap. | 
|  |  | 
|  | \li PVRTShadowVol.h: Tools code for creating shadow volumes. | 
|  |  | 
|  | \li PVRTSkipGraph.h: A "tree-like" structure for storing data which, unlike a tree, can reference any other node. | 
|  |  | 
|  | \li PVRTString.h: A string class. | 
|  |  | 
|  | \li PVRTTexture.h: Load textures from resources, BMP or PVR files. | 
|  |  | 
|  | \li PVRTTrans.h: Transformation and projection functions. | 
|  |  | 
|  | \li PVRTTriStrip.h: Geometry optimization using strips. | 
|  |  | 
|  | \li PVRTVector.h: Vector and Matrix functions that are gradually replacing PVRTMatrix. | 
|  |  | 
|  | \li PVRTVertex.h: Vertex order optimisation for 3D acceleration. | 
|  |  | 
|  | @section APIs APIs | 
|  | ***************************** | 
|  | For information specific to each 3D API, see the list of supported APIs on the <a href="modules.html">Modules</a> page. | 
|  |  | 
|  | */ | 
|  |  | 
|  | #if defined(BUILD_OGLES3) | 
|  | #include "OGLES3Tools.h" | 
|  | #elif defined(BUILD_OGLES2) | 
|  | #include "OGLES2Tools.h" | 
|  | #elif defined(BUILD_OGLES) | 
|  | #include "OGLESTools.h" | 
|  | #elif defined(BUILD_OGL) | 
|  | #include "OGLTools.h" | 
|  | #elif defined(BUILD_DX11) | 
|  | #include "DX11Tools.h" | 
|  | #endif | 
|  |  | 
|  | #endif /* PVRTOOLS_H*/ | 
|  |  | 
|  | /***************************************************************************** | 
|  | End of file (Tools.h) | 
|  | *****************************************************************************/ | 
|  |  |