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