|  | /*!**************************************************************************** | 
|  |  | 
|  | @file         OGLES2/PVRTShader.h | 
|  | @ingroup      API_OGLES2 | 
|  | @copyright    Copyright (c) Imagination Technologies Limited. | 
|  | @brief        Shader handling for OpenGL ES 2.0 | 
|  |  | 
|  | ******************************************************************************/ | 
|  | #ifndef _PVRTSHADER_H_ | 
|  | #define _PVRTSHADER_H_ | 
|  |  | 
|  | /*! | 
|  | @addtogroup API_OGLES2 | 
|  | @{ | 
|  | */ | 
|  |  | 
|  | #include "PVRTContext.h" | 
|  | #include "../PVRTString.h" | 
|  | #include "../PVRTError.h" | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @brief      	Loads a shader source code into memory and compiles it. | 
|  | It also pre-appends the array of defines that have been passed in | 
|  | to the source code before compilation. | 
|  | @param[in]		pszShaderCode		shader source code | 
|  | @param[in]		Type				type of shader (GL_VERTEX_SHADER or GL_FRAGMENT_SHADER) | 
|  | @param[out]	pObject				the resulting shader object | 
|  | @param[out]	pReturnError		the error message if it failed | 
|  | @param[in]		aszDefineArray		Array of defines to be pre-appended to shader string | 
|  | @param[in]		uiDefArraySize		Size of the define array | 
|  | @return		PVR_SUCCESS on success and PVR_FAIL on failure (also fills the str string) | 
|  | *****************************************************************************/ | 
|  | EPVRTError PVRTShaderLoadSourceFromMemory(	const char* pszShaderCode, | 
|  | const GLenum Type, | 
|  | GLuint* const pObject, | 
|  | CPVRTString* const pReturnError, | 
|  | const char* const* aszDefineArray=0, GLuint uiDefArraySize=0); | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @brief      	Takes a shader binary from memory and passes it to the GL. | 
|  | @param[in]		ShaderData		shader compiled binary data | 
|  | @param[in]		Size			size of shader binary data in bytes | 
|  | @param[in]		Type			type of shader (GL_VERTEX_SHADER or GL_FRAGMENT_SHADER) | 
|  | @param[in]		Format			shader binary format | 
|  | @param[out]	pObject			the resulting shader object | 
|  | @param[out]	pReturnError	the error message if it failed | 
|  | @return		PVR_SUCCESS on success and PVR_FAIL on failure (also fills the str string) | 
|  | *****************************************************************************/ | 
|  | EPVRTError PVRTShaderLoadBinaryFromMemory(	const void*  const ShaderData, | 
|  | const size_t Size, | 
|  | const GLenum Type, | 
|  | const GLenum Format, | 
|  | GLuint*  const pObject, | 
|  | CPVRTString*  const pReturnError); | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @brief      	Loads a shader file into memory and passes it to the GL. | 
|  | It also passes defines that need to be pre-appended to the shader before compilation. | 
|  | @param[in]		pszBinFile			binary shader filename | 
|  | @param[in]		pszSrcFile			source shader filename | 
|  | @param[in]		Type				type of shader (GL_VERTEX_SHADER or GL_FRAGMENT_SHADER) | 
|  | @param[in]		Format				shader binary format, or 0 for source shader | 
|  | @param[out]	pObject				the resulting shader object | 
|  | @param[out]	pReturnError		the error message if it failed | 
|  | @param[in]		pContext			Context | 
|  | @param[in]		aszDefineArray		Array of defines to be pre-appended to shader string | 
|  | @param[in]		uiDefArraySize		Size of the define array | 
|  | @return		PVR_SUCCESS on success and PVR_FAIL on failure (also fills pReturnError) | 
|  | *****************************************************************************/ | 
|  | EPVRTError PVRTShaderLoadFromFile(	const char* const pszBinFile, | 
|  | const char* const pszSrcFile, | 
|  | const GLenum Type, | 
|  | const GLenum Format, | 
|  | GLuint* const pObject, | 
|  | CPVRTString* const pReturnError, | 
|  | const SPVRTContext* const pContext=0, | 
|  | const char* const* aszDefineArray=0, GLuint uiDefArraySize=0); | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @brief      	Links a shader program. | 
|  | @param[out]	pProgramObject			the created program object | 
|  | @param[in]		VertexShader			the vertex shader to link | 
|  | @param[in]		FragmentShader			the fragment shader to link | 
|  | @param[in]		pszAttribs				an array of attribute names | 
|  | @param[in]		i32NumAttribs			the number of attributes to bind | 
|  | @param[out]	pReturnError			the error message if it failed | 
|  | @return		PVR_SUCCESS on success, PVR_FAIL if failure | 
|  | *****************************************************************************/ | 
|  | EPVRTError PVRTCreateProgram(	GLuint* const pProgramObject, | 
|  | const GLuint VertexShader, | 
|  | const GLuint FragmentShader, | 
|  | const char** const pszAttribs, | 
|  | const int i32NumAttribs, | 
|  | CPVRTString* const pReturnError); | 
|  |  | 
|  | /*! @} */ | 
|  |  | 
|  | #endif | 
|  |  | 
|  | /***************************************************************************** | 
|  | End of file (PVRTShader.h) | 
|  | *****************************************************************************/ | 
|  |  |