Home | History | Annotate | Download | only in OGLES2
      1 /*!****************************************************************************
      2 
      3  @file         OGLES2/PVRTShader.h
      4  @ingroup      API_OGLES2
      5  @copyright    Copyright (c) Imagination Technologies Limited.
      6  @brief        Shader handling for OpenGL ES 2.0
      7 
      8 ******************************************************************************/
      9 #ifndef _PVRTSHADER_H_
     10 #define _PVRTSHADER_H_
     11 
     12 /*!
     13  @addtogroup API_OGLES2
     14  @{
     15 */
     16 
     17 #include "PVRTContext.h"
     18 #include "../PVRTString.h"
     19 #include "../PVRTError.h"
     20 
     21 /*!***************************************************************************
     22  @brief      	Loads a shader source code into memory and compiles it.
     23 				It also pre-appends the array of defines that have been passed in
     24 				to the source code before compilation.
     25  @param[in]		pszShaderCode		shader source code
     26  @param[in]		Type				type of shader (GL_VERTEX_SHADER or GL_FRAGMENT_SHADER)
     27  @param[out]	pObject				the resulting shader object
     28  @param[out]	pReturnError		the error message if it failed
     29  @param[in]		aszDefineArray		Array of defines to be pre-appended to shader string
     30  @param[in]		uiDefArraySize		Size of the define array
     31  @return		PVR_SUCCESS on success and PVR_FAIL on failure (also fills the str string)
     32 *****************************************************************************/
     33 EPVRTError PVRTShaderLoadSourceFromMemory(	const char* pszShaderCode,
     34 											const GLenum Type,
     35 											GLuint* const pObject,
     36 											CPVRTString* const pReturnError,
     37 											const char* const* aszDefineArray=0, GLuint uiDefArraySize=0);
     38 
     39 /*!***************************************************************************
     40  @brief      	Takes a shader binary from memory and passes it to the GL.
     41  @param[in]		ShaderData		shader compiled binary data
     42  @param[in]		Size			size of shader binary data in bytes
     43  @param[in]		Type			type of shader (GL_VERTEX_SHADER or GL_FRAGMENT_SHADER)
     44  @param[in]		Format			shader binary format
     45  @param[out]	pObject			the resulting shader object
     46  @param[out]	pReturnError	the error message if it failed
     47  @return		PVR_SUCCESS on success and PVR_FAIL on failure (also fills the str string)
     48 *****************************************************************************/
     49 EPVRTError PVRTShaderLoadBinaryFromMemory(	const void*  const ShaderData,
     50 											const size_t Size,
     51 											const GLenum Type,
     52 											const GLenum Format,
     53 											GLuint*  const pObject,
     54 											CPVRTString*  const pReturnError);
     55 
     56 /*!***************************************************************************
     57  @brief      	Loads a shader file into memory and passes it to the GL.
     58 				It also passes defines that need to be pre-appended to the shader before compilation.
     59  @param[in]		pszBinFile			binary shader filename
     60  @param[in]		pszSrcFile			source shader filename
     61  @param[in]		Type				type of shader (GL_VERTEX_SHADER or GL_FRAGMENT_SHADER)
     62  @param[in]		Format				shader binary format, or 0 for source shader
     63  @param[out]	pObject				the resulting shader object
     64  @param[out]	pReturnError		the error message if it failed
     65  @param[in]		pContext			Context
     66  @param[in]		aszDefineArray		Array of defines to be pre-appended to shader string
     67  @param[in]		uiDefArraySize		Size of the define array
     68  @return		PVR_SUCCESS on success and PVR_FAIL on failure (also fills pReturnError)
     69 *****************************************************************************/
     70 EPVRTError PVRTShaderLoadFromFile(	const char* const pszBinFile,
     71 									const char* const pszSrcFile,
     72 									const GLenum Type,
     73 									const GLenum Format,
     74 									GLuint* const pObject,
     75 									CPVRTString* const pReturnError,
     76 									const SPVRTContext* const pContext=0,
     77 									const char* const* aszDefineArray=0, GLuint uiDefArraySize=0);
     78 
     79 /*!***************************************************************************
     80  @brief      	Links a shader program.
     81  @param[out]	pProgramObject			the created program object
     82  @param[in]		VertexShader			the vertex shader to link
     83  @param[in]		FragmentShader			the fragment shader to link
     84  @param[in]		pszAttribs				an array of attribute names
     85  @param[in]		i32NumAttribs			the number of attributes to bind
     86  @param[out]	pReturnError			the error message if it failed
     87  @return		PVR_SUCCESS on success, PVR_FAIL if failure
     88 *****************************************************************************/
     89 EPVRTError PVRTCreateProgram(	GLuint* const pProgramObject,
     90 								const GLuint VertexShader,
     91 								const GLuint FragmentShader,
     92 								const char** const pszAttribs,
     93 								const int i32NumAttribs,
     94 								CPVRTString* const pReturnError);
     95 
     96 /*! @} */
     97 
     98 #endif
     99 
    100 /*****************************************************************************
    101  End of file (PVRTShader.h)
    102 *****************************************************************************/
    103 
    104