• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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