blob: e68305bd000f7f244fd31ff83f6f018692e415dd [file] [log] [blame]
// 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_