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 |