| Index: gpu/demos/app_framework/gles2_utils.cc
 | 
| ===================================================================
 | 
| --- gpu/demos/app_framework/gles2_utils.cc	(revision 0)
 | 
| +++ gpu/demos/app_framework/gles2_utils.cc	(revision 0)
 | 
| @@ -0,0 +1,67 @@
 | 
| +// Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
 | 
| +// Use of this source code is governed by a BSD-style license that can be
 | 
| +// found in the LICENSE file.
 | 
| +
 | 
| +#include "gpu/demos/app_framework/gles2_utils.h"
 | 
| +
 | 
| +namespace {
 | 
| +static const int kInfoBufferLength = 1024;
 | 
| +}  // namespace
 | 
| +
 | 
| +namespace gpu_demos {
 | 
| +namespace gles2_utils {
 | 
| +
 | 
| +GLuint LoadShader(GLenum type, const char* shader_src) {
 | 
| +  GLuint shader = glCreateShader(type);
 | 
| +  if (shader == 0) return 0;
 | 
| +
 | 
| +  // Load the shader source
 | 
| +  glShaderSource(shader, 1, &shader_src, NULL);
 | 
| +  // Compile the shader
 | 
| +  glCompileShader(shader);
 | 
| +  // Check the compile status
 | 
| +  GLint value;
 | 
| +  glGetShaderiv(shader, GL_COMPILE_STATUS, &value);
 | 
| +  if (value == 0) {
 | 
| +    char buffer[kInfoBufferLength];
 | 
| +    GLsizei length;
 | 
| +    glGetShaderInfoLog(shader, sizeof(buffer), &length, buffer);
 | 
| +    std::string log(buffer, length);
 | 
| +    DLOG(ERROR) << "Error compiling shader:" << log;
 | 
| +    glDeleteShader(shader);
 | 
| +    shader = 0;
 | 
| +  }
 | 
| +  return shader;
 | 
| +}
 | 
| +
 | 
| +GLuint LoadProgram(const char* v_shader_src, const char* f_shader_src) {
 | 
| +  GLuint v_shader = LoadShader(GL_VERTEX_SHADER, v_shader_src);
 | 
| +  if (v_shader == 0) return 0;
 | 
| +
 | 
| +  GLuint f_shader = LoadShader(GL_FRAGMENT_SHADER, f_shader_src);
 | 
| +  if (f_shader == 0) return 0;
 | 
| +
 | 
| +  // Create the program object
 | 
| +  GLuint program_object = glCreateProgram();
 | 
| +  if (program_object == 0) return 0;
 | 
| +
 | 
| +  // Link the program and check status.
 | 
| +  glAttachShader(program_object, v_shader);
 | 
| +  glAttachShader(program_object, f_shader);
 | 
| +  glLinkProgram(program_object);
 | 
| +  GLint linked = 0;
 | 
| +  glGetProgramiv(program_object, GL_LINK_STATUS, &linked);
 | 
| +  if (linked == 0) {
 | 
| +    char buffer[kInfoBufferLength];
 | 
| +    GLsizei length;
 | 
| +    glGetProgramInfoLog(program_object, sizeof(buffer), &length, buffer);
 | 
| +    std::string log(buffer, length);
 | 
| +    DLOG(ERROR) << "Error linking program:" << log;
 | 
| +    glDeleteProgram(program_object);
 | 
| +    program_object = 0;
 | 
| +  }
 | 
| +  return program_object;
 | 
| +}
 | 
| +
 | 
| +}  // namespace gles2_utils
 | 
| +}  // namespace gpu_demos
 | 
| 
 | 
| Property changes on: gpu\demos\app_framework\gles2_utils.cc
 | 
| ___________________________________________________________________
 | 
| Added: svn:eol-style
 | 
|    + LF
 | 
| 
 | 
| 
 |