| 50 | } |
| 51 | |
| 52 | int Init () |
| 53 | { |
| 54 | GLbyte vShaderStr[] = |
| 55 | "attribute vec4 vPosition; \n" |
| 56 | "void main() \n" |
| 57 | "{ \n" |
| 58 | " gl_Position = vPosition; \n" |
| 59 | "} \n"; |
| 60 | |
| 61 | GLbyte fShaderStr[] = |
| 62 | "precision mediump float;\n"\ |
| 63 | "void main() \n" |
| 64 | "{ \n" |
| 65 | " gl_FragColor = vec4 ( 0.0, 0.0, 1.0, 1.0 );\n" |
| 66 | "} \n"; |
| 67 | |
| 68 | GLuint vertexShader; |
| 69 | GLuint fragmentShader; |
| 70 | GLint linked; |
| 71 | |
| 72 | vertexShader = LoadShader ( GL_VERTEX_SHADER, (const char *)vShaderStr ); |
| 73 | fragmentShader = LoadShader ( GL_FRAGMENT_SHADER, (const char *)fShaderStr ); |
| 74 | |
| 75 | programObject = glCreateProgram ( ); |
| 76 | if ( programObject == 0 ) |
| 77 | return 0; |
| 78 | |
| 79 | glAttachShader ( programObject, vertexShader ); |
| 80 | glAttachShader ( programObject, fragmentShader ); |
| 81 | glBindAttribLocation ( programObject, 0, "vPosition" ); |
| 82 | glLinkProgram ( programObject ); |
| 83 | glGetProgramiv ( programObject, GL_LINK_STATUS, &linked ); |
| 84 | if ( !linked ) |
| 85 | { |
| 86 | GLint infoLen = 0; |
| 87 | glGetProgramiv ( programObject, GL_INFO_LOG_LENGTH, &infoLen ); |
| 88 | if ( infoLen > 1 ) |
| 89 | { |
| 90 | char* infoLog = malloc (sizeof(char) * infoLen ); |
| 91 | glGetProgramInfoLog ( programObject, infoLen, NULL, infoLog ); |
| 92 | printf ( "Error linking program:\n%s\n", infoLog ); |
| 93 | free ( infoLog ); |
| 94 | } |
| 95 | glDeleteProgram ( programObject ); |
| 96 | return GL_FALSE; |
| 97 | } |
| 98 | |
| 99 | glClearColor ( 0.0f, 0.0f, 0.0f, 0.0f ); |
| 100 | return GL_TRUE; |
| 101 | } |
| 102 | |
| 103 | static const int kNegativeTest = 0; |
| 104 | static const int kPositiveTest = 1; |
no test coverage detected