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