| // Copyright 2015 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. |
| |
| #ifndef UI_GL_GL_HELPER_H_ |
| #define UI_GL_GL_HELPER_H_ |
| |
| #include "ui/gl/gl_bindings.h" |
| #include "ui/gl/gl_export.h" |
| |
| namespace gl { |
| |
| class GL_EXPORT GLHelper { |
| public: |
| // Compiles a shader. |
| // Does not check for errors, always returns shader. |
| static GLuint CompileShader(GLenum type, const char* src); |
| |
| // Compiles a shader and checks for compilation errors. |
| // Returns shader, 0 on failure. |
| static GLuint LoadShader(GLenum type, const char* src); |
| |
| // Attaches 2 shaders and links them to a program. |
| // Does not check for errors, always returns program. |
| static GLuint LinkProgram(GLuint vertex_shader, GLuint fragment_shader); |
| |
| // Attaches 2 shaders, links them to a program, and checks for errors. |
| // Returns program, 0 on failure. |
| static GLuint SetupProgram(GLuint vertex_shader, GLuint fragment_shader); |
| |
| // Sets up a vertex buffer containing 4 vertices that can be used to draw |
| // a quad as a tri-strip. |
| static GLuint SetupQuadVertexBuffer(); |
| |
| // Draws a quad to the currently bound frame buffer. |
| static void DrawQuad(GLuint vertex_buffer); |
| |
| // When using the desktop core profile we have to bind a VAO before |
| // calling glVertexAttribPointer. |
| static bool ShouldTestsUseVAOs(); |
| }; |
| |
| } // namespace gl |
| |
| #endif // UI_GL_GL_HELPER_H_ |