Home | History | Annotate | Download | only in Tools
      1 /*!****************************************************************************
      2 
      3  @file         PVRTools.h
      4  @copyright    Copyright (c) Imagination Technologies Limited.
      5  @brief        Header file to include a particular API tools header
      6 
      7 ******************************************************************************/
      8 #ifndef PVRTOOLS_H
      9 #define PVRTOOLS_H
     10 
     11 /*****************************************************************************/
     12 /*! @mainpage PVRTools
     13 ******************************************************************************
     14 
     15  \tableofcontents
     16 
     17  @section overview Overview
     18 *****************************
     19 
     20 PVRTools is a collection of source code to help developers with some common
     21 tasks which are frequently used in 3D programming.
     22 PVRTools supplies code for mathematical operations, matrix handling,
     23 loading 3D models and to optimise geometry.
     24 Sections which are specific to certain APIs contain code for displaying text and loading textures.
     25 
     26 
     27  @section fileformats File formats
     28 *****************************
     29 The following file formats are used in PVRTools:
     30 
     31  @subsection PFX_format PFX format
     32 *****************************
     33 PFX (PowerVR Effects) files are used to store graphics effects. As a minimum, a correctly formatted PFX consists of:
     34  \li One EFFECT block
     35  \li One VERTEXSHADER block
     36  \li One FRAGMENTSHADER block
     37 
     38 It is also possible for PFXs to contain the following:
     39  \li One TARGET block
     40  \li Zero or more TEXTURE blocks
     41 
     42 By default PFXs are stored in .pfx files. It is possible for multiple PFXs to exist within a single .pfx file,
     43 each described by a separate effect block; in this instance multiple PFXs may share blocks.
     44 Finally, it is possible for a PFX to reference a TARGET block as an input as if it were a TEXTURE block,
     45 enabling the simple creation of complex post-processing effects.  For this to function correctly the TARGET
     46 block render should be completed prior to being read as an input.  If the TARGET block render has not been
     47 completed prior to being read as an input, the behaviour will vary based on the render target implementation of the platform.
     48 
     49 For more information see the <em>PFX File Format Specification</em>.
     50 
     51  @subsection POD_format POD format
     52 *****************************
     53 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.
     54 These files are output by the PVRGeoPOD tool, and are designed for deployment through optimistions such as triangle/vertex sorting and data stripping.
     55 
     56 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>.
     57 
     58  @subsection PVR_format PVR format
     59 *****************************
     60 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.
     61 
     62 For more information see the <em>PVR File Format Specification</em>.
     63 
     64  @section files Header files
     65 *****************************
     66 
     67 Here is a list of common header files present in PVRTools:
     68 
     69  \li PVRTArray.h: A dynamic, resizable template class.
     70 
     71  \li PVRTBackground.h: Create a textured background.
     72 
     73  \li PVRTBoneBatch.h: Group vertices per bones to allow skinning when the maximum number of bones is limited.
     74 
     75  \li PVRTDecompress.h: Descompress PVRTC texture format.
     76 
     77  \li PVRTError.h: Error codes and tools output debug.
     78 
     79  \li PVRTFixedPoint.h: Fast fixed point mathematical functions.
     80 
     81  \li PVRTGlobal.h: Global defines and typedefs.
     82 
     83  \li PVRTHash.h: A simple hash class which uses TEA to hash a string or given data into a 32-bit unsigned int.
     84 
     85  \li PVRTMap.h: A dynamic, expanding templated map class.
     86 
     87  \li PVRTMatrix.h: Vector and Matrix functions.
     88 
     89  \li PVRTMemoryFileSystem.h: Memory file system for resource files.
     90 
     91  \li PVRTMisc.h: Skybox, line plane intersection code, etc...
     92 
     93  \li PVRTModelPOD.h: Load geometry and animation from a POD file.
     94 
     95  \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".
     96 
     97  \li PVRTPrint3D.h: Display text/logos on the screen.
     98 
     99  \li PVRTQuaternion.h: Quaternion functions.
    100 
    101  \li PVRTResourceFile.h: The tools code for loading files included using FileWrap.
    102 
    103  \li PVRTShadowVol.h: Tools code for creating shadow volumes.
    104 
    105  \li PVRTSkipGraph.h: A "tree-like" structure for storing data which, unlike a tree, can reference any other node.
    106 
    107  \li PVRTString.h: A string class.
    108 
    109  \li PVRTTexture.h: Load textures from resources, BMP or PVR files.
    110 
    111  \li PVRTTrans.h: Transformation and projection functions.
    112 
    113  \li PVRTTriStrip.h: Geometry optimization using strips.
    114 
    115  \li PVRTVector.h: Vector and Matrix functions that are gradually replacing PVRTMatrix.
    116 
    117  \li PVRTVertex.h: Vertex order optimisation for 3D acceleration.
    118 
    119  @section APIs APIs
    120 *****************************
    121  For information specific to each 3D API, see the list of supported APIs on the <a href="modules.html">Modules</a> page.
    122 
    123 */
    124 
    125 #if defined(BUILD_OGLES3)
    126 	#include "OGLES3Tools.h"
    127 #elif defined(BUILD_OGLES2)
    128 	#include "OGLES2Tools.h"
    129 #elif defined(BUILD_OGLES)
    130 	#include "OGLESTools.h"
    131 #elif defined(BUILD_OGL)
    132 	#include "OGLTools.h"
    133 #elif defined(BUILD_DX11)
    134 	#include "DX11Tools.h"
    135 #endif
    136 
    137 #endif /* PVRTOOLS_H*/
    138 
    139 /*****************************************************************************
    140  End of file (Tools.h)
    141 *****************************************************************************/
    142 
    143