| /*!**************************************************************************** | |
| @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) | |
| *****************************************************************************/ | |