Index: third_party/gles_book_examples/Common/Source/esShader.c |
=================================================================== |
--- third_party/gles_book_examples/Common/Source/esShader.c (revision 35873) |
+++ third_party/gles_book_examples/Common/Source/esShader.c (working copy) |
@@ -1,155 +0,0 @@ |
-// |
-// Book: OpenGL(R) ES 2.0 Programming Guide |
-// Authors: Aaftab Munshi, Dan Ginsburg, Dave Shreiner |
-// ISBN-10: 0321502795 |
-// ISBN-13: 9780321502797 |
-// Publisher: Addison-Wesley Professional |
-// URLs: http://safari.informit.com/9780321563835 |
-// http://www.opengles-book.com |
-// |
- |
-// ESShader.c |
-// |
-// Utility functions for loading shaders and creating program objects. |
-// |
- |
-/// |
-// Includes |
-// |
-#include "esUtil.h" |
-#include <stdlib.h> |
- |
-////////////////////////////////////////////////////////////////// |
-// |
-// Private Functions |
-// |
-// |
- |
- |
- |
-////////////////////////////////////////////////////////////////// |
-// |
-// Public Functions |
-// |
-// |
- |
-// |
-/// |
-/// \brief Load a shader, check for compile errors, print error messages to output log |
-/// \param type Type of shader (GL_VERTEX_SHADER or GL_FRAGMENT_SHADER) |
-/// \param shaderSrc Shader source string |
-/// \return A new shader object on success, 0 on failure |
-// |
-GLuint esLoadShader ( GLenum type, const char *shaderSrc ) |
-{ |
- GLuint shader; |
- GLint compiled; |
- |
- // Create the shader object |
- shader = glCreateShader ( type ); |
- |
- if ( shader == 0 ) |
- return 0; |
- |
- // Load the shader source |
- glShaderSource ( shader, 1, &shaderSrc, NULL ); |
- |
- // Compile the shader |
- glCompileShader ( shader ); |
- |
- // Check the compile status |
- glGetShaderiv ( shader, GL_COMPILE_STATUS, &compiled ); |
- |
- if ( !compiled ) |
- { |
- GLint infoLen = 0; |
- |
- glGetShaderiv ( shader, GL_INFO_LOG_LENGTH, &infoLen ); |
- |
- if ( infoLen > 1 ) |
- { |
- char* infoLog = malloc (sizeof(char) * infoLen ); |
- |
- glGetShaderInfoLog ( shader, infoLen, NULL, infoLog ); |
- esLogMessage ( "Error compiling shader:\n%s\n", infoLog ); |
- |
- free ( infoLog ); |
- } |
- |
- glDeleteShader ( shader ); |
- return 0; |
- } |
- |
- return shader; |
- |
-} |
- |
- |
-// |
-/// |
-/// \brief Load a vertex and fragment shader, create a program object, link program. |
-// Errors output to log. |
-/// \param vertShaderSrc Vertex shader source code |
-/// \param fragShaderSrc Fragment shader source code |
-/// \return A new program object linked with the vertex/fragment shader pair, 0 on failure |
-// |
-GLuint esLoadProgram ( const char *vertShaderSrc, const char *fragShaderSrc ) |
-{ |
- GLuint vertexShader; |
- GLuint fragmentShader; |
- GLuint programObject; |
- GLint linked; |
- |
- // Load the vertex/fragment shaders |
- vertexShader = esLoadShader ( GL_VERTEX_SHADER, vertShaderSrc ); |
- if ( vertexShader == 0 ) |
- return 0; |
- |
- fragmentShader = esLoadShader ( GL_FRAGMENT_SHADER, fragShaderSrc ); |
- if ( fragmentShader == 0 ) |
- { |
- glDeleteShader( vertexShader ); |
- return 0; |
- } |
- |
- // Create the program object |
- programObject = glCreateProgram ( ); |
- |
- if ( programObject == 0 ) |
- return 0; |
- |
- glAttachShader ( programObject, vertexShader ); |
- glAttachShader ( programObject, fragmentShader ); |
- |
- // Link the program |
- glLinkProgram ( programObject ); |
- |
- // Check the link status |
- glGetProgramiv ( programObject, GL_LINK_STATUS, &linked ); |
- |
- if ( !linked ) |
- { |
- GLint infoLen = 0; |
- |
- glGetProgramiv ( programObject, GL_INFO_LOG_LENGTH, &infoLen ); |
- |
- if ( infoLen > 1 ) |
- { |
- char* infoLog = malloc (sizeof(char) * infoLen ); |
- |
- glGetProgramInfoLog ( programObject, infoLen, NULL, infoLog ); |
- esLogMessage ( "Error linking program:\n%s\n", infoLog ); |
- |
- free ( infoLog ); |
- } |
- |
- glDeleteProgram ( programObject ); |
- return 0; |
- } |
- |
- // Free up no longer needed shader resources |
- glDeleteShader ( vertexShader ); |
- glDeleteShader ( fragmentShader ); |
- |
- return programObject; |
-} |