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