| // Copyright (c) 2012 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 MEDIA_TOOLS_SHADER_BENCH_GPU_PAINTER_H_ |
| #define MEDIA_TOOLS_SHADER_BENCH_GPU_PAINTER_H_ |
| |
| #include "media/tools/shader_bench/painter.h" |
| #include "ui/gl/gl_bindings.h" |
| #include "ui/gl/gl_context.h" |
| #include "ui/gl/gl_implementation.h" |
| #include "ui/gl/gl_surface.h" |
| |
| // Class that renders video frames to a window via GPU. |
| class GPUPainter : public Painter { |
| public: |
| GPUPainter(); |
| virtual ~GPUPainter(); |
| |
| // Returns a reference to the GL context. |
| gfx::GLSurface* surface() const { return surface_; } |
| |
| // Sets context for subsequent gl calls in this painter. |
| virtual void SetGLContext(gfx::GLSurface* surface, gfx::GLContext* context); |
| |
| // Creates shader program into given context, from the vertex and fragment |
| // shader source code. Returns the id of the shader program. |
| virtual GLuint CreateShaderProgram(const char* vertex_shader_source, |
| const char* fragment_shader_source); |
| |
| private: |
| // Loads shader into given context, from the source code of the |
| // shader. type refers to the shader type, either GL_VERTEX_SHADER or |
| // GL_FRAGMENT_SHADER. Returns id of shader. |
| GLuint LoadShader(unsigned type, const char* shader_source); |
| |
| // Reference to the gl context. |
| gfx::GLSurface* surface_; |
| gfx::GLContext* context_; |
| |
| DISALLOW_COPY_AND_ASSIGN(GPUPainter); |
| }; |
| |
| #endif // MEDIA_TOOLS_SHADER_BENCH_GPU_PAINTER_H_ |