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